By Roshan Ramani, July 2026

HOW METASTRIP CLEANS A PHOTO WITHOUT TOUCHING A SINGLE PIXEL

Most online metadata removers work by opening your image, redrawing it, and saving a brand new copy. The metadata is gone, sure, but your photo also got re-compressed along the way. Do that a couple of times and you can start to see it. Muddy edges, blocky gradients, the usual JPEG rot.

MetaStrip takes a different route, and I think it is worth explaining because it is also the reason the tool can promise zero quality loss with a straight face.

A photo file is a box of labeled parcels

A JPEG is not one solid blob. It is a sequence of labeled segments. Some segments hold the actual compressed image data. Others hold the color profile so the image renders correctly. And a few hold metadata. EXIF with your camera and GPS info, XMP with editing history, sometimes plain text comments.

PNG works the same way with chunks instead of segments. Image data in some chunks, text and timestamps and EXIF in others.

Because everything is labeled, you can walk through the file byte by byte, keep the parcels the image needs, and simply not copy the ones that carry metadata. The pixel data passes through untouched. Not re-encoded, not resampled, literally the same bytes in the same order.

What we keep and what we drop

MetaStrip drops the EXIF block, XMP, editor scraps and comments. It deliberately keeps the color profile and the color transform segments, because removing those is how some tools end up shifting the colors of your photo. The goal is a file that looks identical everywhere, because it is identical everywhere it counts.

Why this can run in your browser

Walking file segments is simple work. It needs no server, no upload, no library, just a few hundred lines of JavaScript reading bytes. That is the entire tool. It is open source, so you can read every line on GitHub and confirm your photo never goes anywhere.

Try it on a photo you care about. Strip it, then compare the two files side by side at full zoom. You will not find a difference, because there is none.

Keeping some of it, losing the rest

Because the work is byte-level rather than a re-render, it can also be partial. Every field on a card has a tick box, so you can drop the coordinates and keep the date, or keep the camera model and lose the serial number. Wedding photographers do the first constantly: the exposure settings are the useful part of the notebook, the location of the client's house is not.

Removing one field rather than the whole block means editing inside a structure other things point at, so it is done in the way each format tolerates. In a photo's EXIF block the chosen entries are zeroed byte for byte where they sit. Where a PNG chunk gets edited, its CRC is recomputed so the file stays valid rather than merely looking valid. In a video, a PDF or a raw file, values are blanked in place rather than cut, because those formats store byte offsets that break if anything moves.

The rows with no tick box are the ones that cannot go without breaking the file: a video's duration, frame size and codec, a PDF's page count, a raw file's image dimensions. They are shown because you should know they are readable, not because they are a leak.

Update, August 2026: the same idea in five other formats

This post described JPEG segments and PNG chunks. MetaStrip now cleans video, audio, raw files and PDFs the same way, and each format has its own definition of "empty" — because in most of them you cannot simply not copy the bytes.

A video stores absolute file offsets in its chunk tables, so deleting metadata would desynchronise playback. Instead each doomed box keeps its exact size and becomes a free box with a zeroed payload, which every player already skips. Matroska gets a Void element for the same reason. A PDF's cross-reference table stores byte offsets too, so string values are overwritten with spaces inside their own delimiters. A WAV chunk is renamed JUNK, which the format defines as "skip this". A FLAC metadata block becomes a PADDING block. An Ogg page has to be rebuilt and its checksum recomputed. An MP3 is the easy one: nothing stores an offset, so the tag blocks are simply cut out and the file gets smaller.

In every case the pixels, the frames and the samples pass through untouched. Verified rather than asserted: decoded video frames and audio samples come out hash-identical to the original, and a cleaned PDF renders to identical pixels. Raw files needed a stricter variant again, because their directories hold the structural tags a converter depends on.

TRY IT ON A PHOTO