UNMARK runs in your browser

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

MarkerWhere it livesWhat it carriesWhy it matters
caBXPNG chunkC2PA manifest, signedMeta, LinkedIn and TikTok read this to stamp an AI label
APP11JPEG markerC2PA manifest wrapped in JUMBFSame manifest, same label
C2PAWebP RIFF chunkC2PA manifestSame manifest, same label
uuid d8fec3d6…MP4 and MOV boxC2PA manifest for videoHow Sora and Veo clips announce themselves
Iptc4xmpExtXMP packetDigitalSourceType set to trainedAlgorithmicMediaThe IPTC code that means "a model made this"
eXIf, APP1PNG chunk, JPEG markerSoftware, DateTime, GPS, camera fieldsTies the file to a tool, a moment and sometimes a place
tEXt parametersPNG chunkStable Diffusion prompt, seed and samplerYour whole prompt sits there in plain text
tEXt workflowPNG chunkComfyUI node graph as JSONYour entire pipeline, node by node
APP13JPEG markerPhotoshop 8BIM and IPTC blockCredit 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.