A field guide to what image, video, and PDF files quietly carry — and how to strip EXIF, GPS, XMP, C2PA, and generator tags without uploading the file.
A photo is not only pixels. A JPEG from a phone can carry the GPS coordinates of your kitchen, the serial number of the camera, the time down to the second, and an editing history in XMP. A PNG from Stable Diffusion or ComfyUI can carry the full prompt, the negative prompt, the seed, and the model name. A newsroom image can carry a C2PA content-credential manifest inside a JUMBF box. None of that is visible when you glance at the picture, and all of it survives “Save As” in apps that only recompress the pixels they were shown.
AI Metadata Cleaner — Local EXIF, GPS, XMP & C2PA Metadata Remover strips those blocks in the browser. The file is decoded with WebAssembly on your machine. Camera EXIF, GPS, XMP/IPTC, C2PA/JUMBF markers, and Stable Diffusion or ComfyUI generation tags are removed from images, Camera RAW, video, and PDF. Nothing is uploaded in order to be cleaned. This article explains what each container actually stores, which formats need which decoder, and how to confirm the file is quiet before you publish it.
People say EXIF and mean “anything hidden.” The formats are different, and a cleaner that only deletes the EXIF APP1 segment will leave a prompt in a PNG and a credential manifest in a JUMBF box.
| Block | Where it lives | What leaks |
|---|---|---|
| EXIF | JPEG APP1, TIFF-style IFDs inside RAW, sometimes a video track. | Camera make and model, lens, exposure, serial numbers, timestamps, thumbnails. |
| GPS | An EXIF IFD, or a QuickTime location metadata item. | Latitude, longitude, altitude. Often precise enough to identify a home or office. |
| XMP / IPTC | A separate packet in JPEG, PNG, TIFF, and PDF. | Captions, author, copyright, editing steps, location fields that are not in EXIF. |
| C2PA / JUMBF | A JPEG APP11 segment or an embedded JUMBF box in PNG, TIFF, and other carriers. | Content credentials: who signed the asset, which tool produced it, and ingredient hashes. The manifest can also reference the source image. |
| Generator chunks | PNG text chunks (parameters, prompt, workflow, ComfyUI) and similar WEBP/EXIF user comments. | The positive and negative prompt, sampler, seed, CFG, model hash, and sometimes the whole node graph. |
Stripping is not the same as inspecting. If you only want to know what a file contains before you decide, use the read-only path: Read-Only EXIF, GPS, XMP & C2PA Provenance Marker Inspector. Detection does not rewrite the file. Cleaning does. Keep the original until you have opened the cleaned copy and confirmed it still looks right.
“In the browser” is only meaningful if the bytes never go to a server to be parsed. AI Metadata Cleaner does the work in WebAssembly inside the page. The decoder depends on the container, because a JPEG segment walker cannot understand a CR3 file or an MP4 moov atom.
These are the files people paste into chat apps and CMSs, and they are the files most likely to still be carrying yesterday’s location.
parameters and where ComfyUI writes a workflow. EXIF can hide in an eXIf chunk, XMP in iTXt, and a C2PA manifest in a JUMBF-related chunk. The image data chunks (IDAT) stay. You get the same pixels and a smaller, quieter file.iloc/mdat media. A rename from .heic to .jpg does nothing. The box structure has to be rewritten with the metadata boxes removed and offsets repaired.RAW files — CR2, CR3, NEF, ARW, DNG, and the rest — are the files photographers hand to a client or drop on a shared drive when they meant to send a JPEG. They often contain a full EXIF block, a GPS IFD, an embedded JPEG preview that has its own EXIF, and a maker-note block with serial numbers. The preview is a common miss: you strip the RAW header and the embedded preview still geotags the shoot.
Decoding that variety in a browser is why the cleaner uses LibRaw compiled to WebAssembly. LibRaw knows the container well enough to find the preview and the metadata IFDs without a native install. The practical rule: after a RAW clean, run detection again on both the RAW and any JPEG you exported from it. Exporting a JPEG from a RAW developer will happily re-attach the camera profile and the GPS unless you tell that developer not to.
Phones write location into the QuickTime metadata of an MOV or MP4, next to creation time and device model. WebM (Matroska) has its own tags. A still-image stripper will not see any of it. The cleaner runs FFmpeg compiled to WebAssembly so it can remux the streams: copy the video and audio bitstreams without re-encoding them, and write a new container that does not carry the location tags, the comment fields, or the encoder identifying string.
Copying streams matters. Re-encoding a 4K clip in a browser tab is slow and lossy; remuxing is a structural edit. When you check the result, confirm the duration, the audio sync at a cut, and the absence of a location tag. If a player still shows a place name, it may be reading a subtitle track or a chapter title rather than the GPS item — look at those too.
PDF metadata is the Info dictionary and, increasingly, an XMP metadata stream: Author, Creator, Producer, creation and modification dates, and sometimes a title that is the original filename on your desktop (Passport-scan-final.pdf). Thumbnails and piece-info dictionaries can retain editor traces. A local cleaner rewrites those structures in the browser and leaves page content streams in place, so the text you see does not move and the file does not have to pass through an online converter.
PDF cleanup does not anonymize what you printed on the page. A letterhead with an address is pixels or text, not metadata. Strip metadata for the hidden fields, and read the pages themselves for everything else.
Content Credentials are not a caption. A C2PA manifest is a signed structure inside a JUMBF box. It can describe the tool that exported the image, the actions taken, and hashes of ingredients. Publishing it is sometimes what you want — a newsroom asserting provenance. Publishing it by accident is how a private edit, an unreleased tool name, or a link back to a source asset leaves your machine.
Removing it means removing the JUMBF box and the pointer that JPEG or PNG uses to find it, not flipping a “strip EXIF” checkbox in an editor that has never heard of APP11. The dedicated walkthrough is Browser-Based C2PA & JUMBF Container Marker Remover. Afterward, open the file in the detector and confirm no provenance marker remains. A partial delete that leaves a broken pointer is worse than a clean removal: some validators will flag the file as tampered, which draws attention to exactly the history you meant to drop.
If you generated the image, the PNG is probably a notebook. Automatic1111 writes a parameters text chunk with the prompt, negative prompt, steps, sampler, CFG, seed, and model. ComfyUI writes the workflow graph, which includes node names, file paths, and prompt text. Those chunks are why a stranger can drop your image into a viewer and recover the prompt you never posted.
The focused tool for that case is Stable Diffusion & ComfyUI PNG Prompt Chunk Cleaner. Use it before you upload a generation to a portfolio, a client channel, or a model-training set you do not want to annotate for free. Then run detection. A viewer that still shows a prompt is reading a chunk you kept, or a second copy of the image you forgot to replace.
One-off cleaning does not match how files actually ship. A product shoot is a folder. A RAW card is a folder. Re-running a single-file dialog fifty times is how the one geotagged JPEG survives. The batch path accepts a set of files, cleans each locally, and packs the results into a ZIP you download immediately: Bulk Multi-File Metadata Cleaner with Instant ZIP Export.
A sane batch habit:
Start at AI Metadata Cleaner — Local EXIF, GPS, XMP & C2PA Metadata Remover. The whole point of the tool is that the inspection and the strip happen in the tab you already have open, in WebAssembly, on the file you already have on disk — still images, LibRaw for Camera RAW, FFmpeg.wasm for MP4, MOV, and WebM, and PDFs included — and the cleaned bytes are the ones you download.