What is C2PA?
C2PA is an open technical standard, published by the Coalition for Content Provenance and Authenticity, for recording how a piece of media was made and attaching that record to the file with a cryptographic signature. When you see the name Content Credentials in an Adobe, OpenAI or Google product, that is C2PA under a friendlier label. Its value is specific and worth stating precisely: it does not detect AI, it carries a claim that can be verified or shown to have been broken.
Short answer: a signed provenance record travelling inside the file
A C2PA manifest bundles assertions about an asset — what tool produced it, which actions were applied, and a digitalSourceType describing the nature of the source — then signs the bundle together with a hash of the asset itself. A reader can therefore check two separate things: whether the file still matches what was signed, and whether the signing certificate is one they trust. Both questions have real answers, which is what distinguishes provenance from guesswork.
Bundled samples showing each outcome
| Adobe Firefly JPEG | A Content Authenticity Initiative sample carrying digitalSourceType = trainedAlgorithmicMedia. The signature is cryptographically valid, but its certificate is outside this engine's trust list, so the result reads valid rather than trusted. |
|---|---|
| OpenAI image with an expired certificate | Another CAI sample: the trainedAlgorithmicMedia claim is present, but the signing certificate has expired, so validation fails and the claim cannot be relied on. |
| Google Veo MP4 | Shows the same machinery in a video container — valid Google generative-AI credentials carried through BMFF rather than a still image. |
Signals to Check
| Manifest and claim | The container holding assertions plus the signature. Reading it tells you what the file asserts about its own history. |
|---|---|
| digitalSourceType | A controlled vocabulary term describing the source. trainedAlgorithmicMedia is the value that indicates generative AI. |
| Claim generator | Identifies the software that produced the claim, such as an Adobe, OpenAI or Google generative-AI product string. |
| Signature and trust state | Whether the manifest validates against the asset hash, and separately whether its certificate chains to a trusted root. |
How the record is stored inside different file types
C2PA data is serialised as JUMBF, a box-based container defined by JPEG, and then embedded wherever a given format allows a payload to ride along. That is why the same credential survives across media types without changing shape:
- JPEG: written into an APP11 marker segment, which ordinary decoders skip over.
- PNG: carried in a dedicated chunk, so it sits alongside the image data rather than inside it.
- MP4 and MOV: stored in the ISO base media file format box structure, which is how signed video works.
- Because it is embedded rather than referenced, the credential travels with the file — and is lost whenever the file is rewritten.
Valid is not the same as trusted
This distinction causes more confusion than any other part of the standard. Valid means the cryptography checks out: the signature verifies and the asset still hashes to what was signed, so nothing has been altered since. Trusted is a separate question about the certificate — whether it chains back to a root in the list the verifier happens to be using. A perfectly genuine file can read valid but untrusted simply because the verifier does not carry that root, which is exactly what the bundled Firefly sample demonstrates. Collapsing these into one badge throws away the information you need.
What C2PA does not tell you
The standard records claims made by a signer; it does not independently inspect pixels. A manifest can state that an invisible watermark was applied, but reading that sentence is not the same as verifying the watermark. Equally, credentials describe editing history as readily as generation, so a valid manifest is not automatically an AI finding — you have to read what it declares. And because any re-encode drops the record, the absence of C2PA carries almost no information: it cannot distinguish a file that never had credentials from one that lost them on the way.
Verifying a C2PA manifest yourself
- Start from the original file — Use the download as it left the platform. A screenshot or re-uploaded copy has almost certainly lost the manifest.
- Open the C2PA validator — The file is parsed in your browser, so nothing is uploaded to verify it.
- Check whether the signature validates — Confirm the manifest verifies and that no tampering error is raised against the asset hash.
- Read the trust state separately — See whether the certificate resolves to a trusted root, and treat valid-but-untrusted as a statement about the chain, not about integrity.
- Read what the manifest actually claims — Look at digitalSourceType, the claim generator and the recorded actions before concluding anything about AI generation.
Limits
- Re-encoding, screenshots, format conversion and non-preserving editors remove the manifest from the file.
- Trust state depends on the certificate list in use, so valid-but-untrusted results are routine rather than suspicious.
- A manifest may record editing rather than generation: what it declares must be read, not assumed.
- Absent credentials tell you nothing about origin, because a stripped file and a never-signed file look identical.
Use the C2PA validator for manifest detail, or run the full detector to read credentials alongside EXIF, XMP and PNG parameters.
FAQ
What does C2PA stand for?
The Coalition for Content Provenance and Authenticity, the standards body that publishes the specification. Content Credentials is the consumer-facing name products use for the same technology.
Does C2PA prove an image is AI-generated?
Not by itself. C2PA records provenance for any media, including ordinary camera photographs. It indicates AI generation when the manifest declares it — typically digitalSourceType = trainedAlgorithmicMedia or a generative claim generator.
Why does a valid file show as untrusted?
Because those answer different questions. Valid means the signature verifies and the asset is unaltered; trusted means the certificate chains to a root in the list being used. A genuine file can be valid and untrusted at once.
Can C2PA be removed from a file?
Yes, and usually by accident. Any process that rewrites the file — social platform re-encoding, screenshots, format conversion, editors without C2PA support — drops the manifest.
How can I check C2PA for free?
Load the file into the C2PA validator here. It parses the manifest in your browser through Rust compiled to WebAssembly, with no account and no upload.
Sources and verification records
- C2PA Technical Specification 2.2 — Official specification for manifests, assertions, signing and verification.
- AICheck365 public sample records — Provenance, test dates and observed states for the Firefly, OpenAI and Veo samples.
- Content Authenticity Initiative example assets — Public source of the Firefly and expired-certificate samples.
- AICheck365 methodology — How signature state, trust state and evidence tiers are reported.