Skip to content
Delete Image Metadata

How it works

The whole pipeline, step by step — because a privacy tool asking for trust should explain what it does.

1. The file is read, not uploaded

When you choose a file, the browser hands the page a File object. Its bytes are read into memory with the File API. That is the whole of the input step: there is no network request, no form submission and no server involvement.

The format is then identified from the first bytes of the file — the JPEG start-of-image marker, PNG's eight-byte signature, RIFF/WEBP tags — rather than from the extension or the MIME type the browser reports, both of which can be wrong or deliberately misleading.

2. The container is parsed

Two passes run over the bytes. The structural pass walks the container and records every metadata block it finds with its exact size: which APP segments a JPEG has, which chunks a PNG carries, which optional chunks a WebP declares in its VP8X header.

The tag pass then decodes the contents of those blocks into named fields using exifr, an established open-source parser, plus dedicated handling for PNG text chunks, which is where AI generation data lives.

Every value is sanitised before it reaches the page: control characters and bidirectional overrides are stripped, values are collapsed to one line and length-limited, and everything is rendered as text rather than markup.

3. Metadata is removed without touching pixels

Removal rebuilds the file from its own parts. The structural segments and the compressed image data are copied across byte for byte, and the metadata blocks are simply omitted. Nothing is decoded, re-drawn or re-encoded.

This is the difference between this tool and the common canvas-based approach, which redraws the image and saves a new one. That method removes metadata as a side effect but re-compresses every pixel — a real quality cost paid for no reason.

Some housekeeping is required to keep the output valid: WebP's VP8X flag byte is rewritten so it no longer advertises chunks that are gone, and the RIFF size field is recalculated. PNG chunks each carry their own checksum, so dropping one needs no repair at all.

4. The output is verified

The cleaned bytes are then read back through the same parser, from scratch, as if they were a file you had just chosen. The before-and-after numbers you see come from two real passes over two real files.

If anything remains, it is listed. Two things commonly do, and both are shown rather than hidden: the ICC colour profile, kept so colours do not shift, and — for photos shot rotated — a 32-byte EXIF block containing only the orientation flag, so the clean copy is not displayed sideways. Both can be switched off.

5. The download is built locally

The cleaned bytes are wrapped in a Blob and handed to an object URL, which the download link points at. The file is produced by your browser, from data that never left it, and your original file is never modified at any point in the process.

See it on your own file

Load an image and watch the analyse, remove and verify steps run in your browser.

Open the tool

Frequently asked questions

How can I confirm nothing is uploaded?

Open your browser's developer tools, switch to the network tab and clean an image: no request contains the file. Alternatively, load the page, disconnect from the network, and clean an image anyway — it still works.

Why is removal lossless?

Because the compressed image data is copied from the original rather than regenerated. The pixels in the output are the same bytes as the pixels in the input, so there is no second round of compression.

Does the tool work offline?

Once the page has loaded, yes. All the processing code is already in your browser at that point.

What happens with a file the engine cannot handle?

You get an explicit message naming the format and what to do instead. The tool never returns a file it did not actually clean.