AI metadata remover
Image generators sign their output. Drop a file here and Unmark reads every metadata block inside it, names what it found, and hands back a copy with those blocks gone. Nothing is uploaded. The parser runs in this tab, so your file never touches a server.
Drop files here
PNG, JPEG, WebP, MP4 and MOV. Batch is fine.
What Unmark looks for
| Marker | Where it lives | What it carries | Why it matters |
|---|---|---|---|
| caBX | PNG chunk | C2PA manifest, signed | Meta, LinkedIn and TikTok read this to stamp an AI label |
| APP11 | JPEG marker | C2PA manifest wrapped in JUMBF | Same manifest, same label |
| C2PA | WebP RIFF chunk | C2PA manifest | Same manifest, same label |
| uuid d8fec3d6… | MP4 and MOV box | C2PA manifest for video | How Sora and Veo clips announce themselves |
| Iptc4xmpExt | XMP packet | DigitalSourceType set to trainedAlgorithmicMedia | The IPTC code that means "a model made this" |
| eXIf, APP1 | PNG chunk, JPEG marker | Software, DateTime, GPS, camera fields | Ties the file to a tool, a moment and sometimes a place |
| tEXt parameters | PNG chunk | Stable Diffusion prompt, seed and sampler | Your whole prompt sits there in plain text |
| tEXt workflow | PNG chunk | ComfyUI node graph as JSON | Your entire pipeline, node by node |
| APP13 | JPEG marker | Photoshop 8BIM and IPTC block | Credit fields and editing history |
What this cannot do
Invisible watermarks stay
OpenAI and Google also write a signal into the pixels themselves. The sample above literally declares c2pa.watermarked.unbound in its own manifest. No metadata tool reaches that, and detectors are built to survive a re-save.
Platforms have other signals
A clean file can still be labelled from a model fingerprint on the platform side, or from the account that uploaded it. Removing the manifest removes one signal, not every signal.
Pixels are untouched by default
Unmark copies the image data byte for byte and drops only the metadata blocks around it, so there is zero quality loss. Tick the re-encode box only when you accept a rewritten file.
Video keeps its size
In MP4 and MOV the manifest is overwritten in place with an empty free box instead of being cut out. That keeps every internal offset valid, so the file still plays. The byte count stays the same.