What this tool checks
C2PA — the Coalition for Content Provenance and Authenticity — is an open standard for recording where a file came from. A C2PA manifest is embedded inside the file itself and cryptographically signed, so unlike EXIF it cannot be quietly edited.
The tool reads that manifest and reports four things: the tool or AI model that signed the file, the certificate holder behind the signature, the timestamp, and whether the file content still matches what was signed.
How it identifies AI-generated images
C2PA manifests carry an IPTC digitalSourceType assertion that states how the content was made. The values that matter:
trainedAlgorithmicMedia— created by a trained AI modelcompositeWithTrainedAlgorithmicMedia— partly AI, composited with other materialdigitalCapture— captured by a camera or recordercomputationalCapture— camera capture with computational processingdigitalArt,humanEdits— human-made or human-edited
When a file carries a valid signature declaring trainedAlgorithmicMedia, that is as close to proof of AI generation as currently exists.
What a result proves — and what it does not
A valid credential is conclusive about signing. If verification passes, the file is byte-identical to what the signer signed and the certificate identifies the signer. This is cryptography, not a probability score.
No credential proves nothing at all. Screenshots, re-saves, format conversion and nearly every CDN image pipeline strip C2PA metadata. An unmarked file may be a camera original, AI output or anything else. Read "no Content Credentials" as no signal, never as human-made.
A valid signature does not make the claim true. It proves the signer's claim is authentic and unaltered. A tool that signs a manifest saying "camera capture" is making a claim; the signature guarantees it came from that tool untampered, nothing more. That is why the certificate issuer is shown prominently — a credential is only as trustworthy as its signer.
A broken signature is not automatically malice. Ordinary edits break credentials constantly. A C2PA-aware editor re-signs and preserves the chain; a non-aware one breaks it.
Why there is no text checker here
The most common request for a tool like this is text: paste an article, find out whether a model wrote it. That capability does not exist for anyone outside the model vendors.
Text watermarking works by biasing token selection during generation according to a secret key, and detecting the bias requires that key. Google's SynthID detector for Gemini text is restricted to Google and selected enterprise partners. Anthropic has committed to watermarking Claude output and says detection documentation is forthcoming, but nothing is available to third parties yet. OpenAI has not shipped a detectable text watermark.
What public "AI detectors" measure instead is perplexity and burstiness — correlates of machine generation, not evidence of it. Vendor-reported accuracy sits in the 62–88% band. A Stanford HAI study published in Cell Patterns found 61% of TOEFL essays by non-native English speakers were wrongly flagged as AI, because non-native writing tends toward the lower lexical variability those classifiers read as machine-like. A detector that is 80% right produces a confident number that gets used to accuse people, so this tool returns nothing rather than a guess.
Verifying outside the browser
For batch work, the reference CLI gives the same result this page does — both wrap the same Rust core:
c2patool image.jpg -d