How PromptWipe removes metadata without touching the pixels

An image file is a container: blocks of picture data and blocks of metadata. PromptWipe reads that structure in your browser, copies the picture blocks byte for byte and leaves the metadata blocks out. Nothing is re-encoded and nothing is uploaded. Invisible watermarks written into the pixels stay.

What does PromptWipe keep, and what does it remove?

It keeps what your browser needs to show the picture exactly as before: the image data, transparency, animation and colour information. It removes everything else. The file is cut along its own structure (each block states its length), never by searching for words in it.

Format Kept Removed
PNG Image header and data (IHDR, PLTE, IDAT, IEND), transparency (tRNS), animation (acTL, fcTL, fdAT), colour information (sRGB, gAMA, cHRM, iCCP, cICP, HDR chunks) Text chunks (tEXt, zTXt, iTXt: Stable Diffusion parameters, ComfyUI prompt and workflow, InvokeAI, Fooocus, XMP), eXIf, caBX (C2PA), tIME, pHYs, bKGD and every other optional chunk, bytes after the end
JPEG Everything needed to decode (quantization and Huffman tables, frame header, every scan of a progressive JPEG), the JFIF header without its thumbnail, the Adobe segment (colour decoding), the ICC colour profile EXIF (camera, software, date, GPS, description, UserComment, MakerNote, thumbnail), XMP and extended XMP, IPTC and Photoshop data, every C2PA segment, comments, other application segments, secondary images (HDR gain map, Motion Photo video), bytes after the end
WebP Image data (VP8, VP8L, ALPH), the extended header (VP8X), animation (ANIM, ANMF), the ICC colour profile (ICCP) EXIF, XMP , C2PA, every unknown chunk (inside animation frames too), bytes beyond the declared size. The header flags and the file size are recomputed

One thing is written back on purpose: when a phone photo is stored sideways and the EXIF says “rotate”, PromptWipe writes a new 32-byte EXIF block that holds the orientation and nothing else, so the photo stays the right way up. If the file had an HDR gain map, the picture can look less bright on an HDR screen afterwards; if it was a Motion Photo, the short video is gone. The report says so when it happens.

Why not redraw the picture in a canvas?

Many online tools draw the image on a canvas and export a new file. That re-compresses a JPEG (quality loss), converts wide-gamut colours such as Display P3 to sRGB, and keeps only the first frame of an animation. Copying the blocks avoids all three, and the format never changes: a PNG stays a PNG, a JPEG stays a JPEG.

What is checked before you can download the file?

The cleaned file is offered only after two checks: it is read again and must contain no metadata block, then your browser decodes it and the original, and both must have the same dimensions. If anything looks wrong, nothing is offered and your image is not changed.

What does the report show?

Before you download anything, PromptWipe shows what your image contains, then what was removed and what was kept.

Values read from a file are untrusted. They are always shown as plain text, never interpreted as HTML. Very long values are cut at 20,000 characters on screen; the Copy button copies the full text.

How can you check that nothing is sent?

You do not have to take our word for it. Four checks take a few minutes:

  1. Network tab. Open your browser’s developer tools (F12, or Cmd+Option+I on a Mac), go to Network, then drop an image. Processing adds no request to any server. The only new entries are blob: addresses: copies held in your browser’s memory for the preview and the download.
  2. Response headers. In the same tab, click the page itself and read its Content-Security-Policy header. It contains connect-src 'none': the browser blocks any connection a script on the page tries to open (MDN: connect-src). It also forbids scripts from other sites and form submissions.
  3. Offline. Load the page, turn on airplane mode, then drop an image. It still works: the tool is loaded with the page and needs nothing else.
  4. Source code. The code is open under the MIT licence on GitHub. Its tests fail if the site’s code contains a network call.

What is in the diagnostic?

If something goes wrong, the result offers a “Copy the diagnostic” button. The diagnostic describes the structure of the file only: format, size, dimensions, and the list of blocks with their position, name, size and what was done with them. It never contains a value from the file, a text, a location or the file name. Paste it into a bug report so we can reproduce the problem without seeing your image.

What are the limits?

To clean an image now, go back to the tool.

Last updated: