Detection
Content Credentials (C2PA)
We read the Content Credentials a generator embeds and what they declare about the file. We do not verify the signature, so a declaration is strong evidence rather than proof.
Updated
Content Credentials are a signed manifest that generators and cameras can embed in an image or video, describing where it came from. Google (Gemini, Imagen, Nano Banana, Pixel), OpenAI, Adobe, Microsoft and Meta sign their output this way.
What we check
We look through the file's container for a Content Credentials manifest and read two fields out of it: the generator named in claim_generator, and the declared digital source type from its actions. What the manifest says is what the check reports.
- A manifest whose source type is "trained algorithmic media" scores 0.95 and names the generator when the manifest gives one ("Content Credentials", badge Strong).
- A
claim_generatorwe recognise as an AI generator also scores 0.95, even without a source type. - Composite with AI-generated media scores 0.80.
- A source type that says the file was captured by a camera scores 0.05.
- A manifest that is present but makes no AI-generation claim is reported as exactly that, with no score.
- No manifest means the row says the check ran and found nothing.
What this check does not do
It does not verify the manifest's signature or its certificate chain, and it does not check the signer against the C2PA trust list. It reads what the manifest declares and takes it at face value. That matters in two directions: a manifest can be copied from another file onto an unrelated one, and a manifest that has been tampered with will still be read. So a Content Credentials hit is strong evidence about the file's stated origin, not cryptographic proof of it.
Provider-verified results are a separate thing and can arrive through OpenAI's provenance check, which does the verification on OpenAI's side.
Parsing normally runs on our API. Where that is not possible the extension can parse the manifest in the page and send what it found instead.
Why it fires less often than you would hope
Most social platforms strip metadata, including Content Credentials, on upload. A Gemini image posted natively to X usually arrives without its manifest. Where the platform preserved it (some hosts, direct links, files shared in messaging apps) this check names the generator outright.
Formats
JPEG, PNG, WebP, GIF (via XMP), AVIF, HEIC, JPEG XL and MP4 containers (the first 4 MB of a video is scanned for a manifest). WebM and Matroska containers are not scanned.