Bench

C2PA Content Credentials & SynthID Inspector

beta

Verify a file's Content Credentials, read every AI-provenance signal, and see why SynthID is different

How it works

The inspector reads the file locally and does two independent things. First it locates the C2PA manifest store in the container — APP11 JUMBF segments in JPEG, the caBX chunk in PNG, the C2PA chunk in WebP and WAV, the C2PA_GIF application extension, the C2PA uuid box in MP4/MOV/HEIC/AVIF, tag 0xCD41 in TIFF/DNG, a GEOB frame in MP3, or the <c2pa:manifest> element in SVG — and parses it byte by byte: JUMBF boxes, the CBOR claim and assertions, the COSE_Sign1 signature and the X.509 certificate chain, all shown raw. Then the official c2pa-web SDK (c2pa-rs compiled to WebAssembly) validates it properly: signature, certificate validity, content-hash binding, ingredients, timestamps, and trust against the Content Authenticity Initiative trust list, so you see Trusted, Valid-but-untrusted, or Invalid with the exact reason. Alongside that it extracts EXIF, XMP, IPTC and text-chunk metadata and turns them into AI signals: IPTC digital source types like trainedAlgorithmicMedia, C2PA actions and software agents, and generator fingerprints from Stable Diffusion, ComfyUI, Midjourney, Firefly, DALL·E, Google and others. SynthID — Google's invisible pixel/audio/text watermark — cannot be detected by anyone but Google, and the tool says so plainly while showing the C2PA and IPTC declarations Google ships next to it. Finally, a demo lets you add a real, spec-compliant manifest to any file using a public test certificate, signed in the browser with WebCrypto, so you can watch validation succeed while trust fails.

Questions

Can this tool detect SynthID?

No — and neither can any third-party tool. SynthID is a keyed statistical watermark; only Google's detector (the SynthID Detector portal, or asking the Gemini app) can read it. What can be checked are the C2PA Content Credentials and IPTC 'trained algorithmic media' metadata Google attaches to its AI output, which this inspector reads and validates.

What do Trusted, Valid and Invalid mean?

Invalid means the manifest is broken or the content was changed after signing (hash mismatch). Valid means the signature and hash check out but the signing certificate isn't on the C2PA trust list — anyone can sign with any certificate, so treat the claims as unverified. Trusted means the certificate chains to a trust-list anchor (Adobe, camera makers, OpenAI, Google and other known signers).

Is my file uploaded anywhere?

No. Parsing, hashing and signature validation run in your browser (the verifier is c2pa-rs compiled to WebAssembly). The only network requests fetch the public trust list from the Content Authenticity Initiative and, for remote manifests, the manifest URL embedded in the file.

Why does an AI image show no AI signal?

Because provenance metadata is fragile: screenshots, most social platforms and many editors strip C2PA and XMP entirely. A missing declaration is not evidence that a file is human-made — only a positive signal tells you something.

Which formats are supported?

JPEG, PNG, WebP, GIF, TIFF/DNG, AVIF, HEIC/HEIF, MP4/MOV/M4A, MP3, WAV, SVG and PDF. Validation follows what c2pa-rs supports; the structural scan works on all of them.

What is the demo signing certificate?

The public ES256 test certificate from the c2pa-rs project ('C2PA Test Signing Cert — FOR TESTING ONLY'). Files signed with it are real C2PA assets that validate everywhere but are never trusted, which makes the trust-list step visible. Don't use them as proof of anything.