MetaRinse guide
How MetaRinse processes images locally
MetaRinse uses browser File, image decoding, canvas, and object URL APIs. Image bytes and extracted fields are not sent to a server.
The local sequence
| Stage | Browser action | Network use |
|---|---|---|
| Select | File input provides an explicit local File | None |
| Inspect | exifr parses readable fields in a worker when supported | None |
| Decode | createImageBitmap or an image element decodes pixels | None |
| Re-encode | OffscreenCanvas or canvas creates a new Blob | None |
| Verify | The new Blob is parsed again | None |
| Download | A temporary object URL points to the local Blob | None |
Architecture diagram
- Local fileExplicit user selection
- InspectSignature check and metadata parser
- DecodeImage pixels in browser memory
- Re-encodeCanvas creates a new Blob
- VerifyThe new Blob is parsed again
- DownloadTemporary local object URL
Why re-encoding removes metadata
MetaRinse does not copy the original container. It decodes the visible pixel result and asks the browser encoder to create a fresh JPEG, PNG, or WebP Blob. The original EXIF/XMP/IPTC-style blocks are therefore not passed to the encoder. The new Blob is still verified because behavior should be observed, not merely assumed.
Worker and fallback behavior
When Worker, createImageBitmap, and OffscreenCanvas are available, parsing and encoding run away from the main interface. Files are processed sequentially to control memory. Browsers without OffscreenCanvas use an isolated canvas fallback on the main thread. Cancellation stops the queue and discards unfinished output.
Object URL lifecycle
Previews and downloads use blob: URLs that reference browser memory. MetaRinse revokes them when an item is removed, results are cleared, or the app unmounts. Files and metadata are not written to localStorage, IndexedDB, or an account.
What normal web requests still reveal
Loading the site sends ordinary requests for HTML, JavaScript, CSS, and self-hosted fonts. The hosting provider can receive standard connection data such as IP address and user agent. Before ads are enabled, MetaRinse loads only same-origin assets. Selected image bytes, names, metadata, previews, and hashes are excluded from every request.
Tradeoffs
- JPEG and WebP are re-encoded with lossy quality settings.
- PNG is regenerated and may lose profile-related information.
- File size and subtle pixel values can change.
- Vendor-specific metadata can be unreadable to the scanner.
- Visible information and filenames require a separate review.
Sources
Related guides
Your image never leaves your device.
Clean images