C2PA — the Coalition for Content Provenance and Authenticity — defines a signed record describing how a file was made and changed. Generators that support it write a manifest into the file at export. The manifest is not a comment; it is a structured, cryptographically signed object carried in a JUMBF box.
Where it lives per format
| Format | Carrier | Typical content |
|---|---|---|
| JPEG | APP11 segment, payload starts JP | JUMBF superbox with manifest, assertions, signature |
| PNG | caBX chunk or iTXt with a JUMBF payload | Same manifest, base64 or binary |
| WebP | EXIF / XMP chunk or a custom RIFF chunk | XMP with c2pa fields, sometimes raw JUMBF |
| MP4 / MOV | Top-level uuid box, user type d8fec3d61b0e483c92975828877ec481 | Manifest plus hash assertions over the media |
Why export is not removal
Opening a file in an editor and exporting again often drops the manifest by accident — but not reliably, and not completely. Some editors preserve unknown segments; some write their own XMP that restates the AI origin; some carry DigitalSourceType = trainedAlgorithmicMedia in IPTC fields that survive every conversion.
Re-saving also changes the pixel data, which may weaken the separate SynthID signal, but that is a side effect, not a removal strategy. A proper pass works at the container level: parse the real structure, drop the carrier, rebuild the file, verify the rebuild decodes.
The MP4 detail that bites people
A C2PA box in MP4 sits at the top level, usually between ftyp and moov. Deleting it outright shifts every byte after it, which breaks every absolute chunk offset stored in stco or co64. The file will appear to exist, and the decoder will fail or play garbage.
The correct, lossless move is to overwrite the box in place with a free box of exactly the same length. Offsets stay valid, the media data is untouched, and the manifest is gone. ghostframe does this and then demuxes the result with ffprobe to confirm the file still opens.
What a verifier sees afterwards
Nothing to read. A C2PA verifier looks for the manifest carrier. No carrier, no assertion, no signature to check. That is a cleaner outcome than a broken manifest, which some readers report as a tampering signal rather than as absence.