LOCAL PROVENANCE INSPECTION
See what a file can prove about its origin
Inspect C2PA, metadata and provider signals locally. Nothing is uploaded.
LOCAL ONLYINPUT / FILEDrop a file for local inspection
PDF · DOCX · XLSX · PPTX · images · text · LOCAL ONLYLive example report
A public, reproducible C2PA test fixture. No fabricated product-demo values.
PUBLIC TEST FIXTURE / C2PALive example reportSIGNATURE VALID- SHA-256
75a8da33f6ea…4230ce864- STANDARD
C2PA 2.2- MANIFEST
DETECTED- SIGNATURE
VALID
Signature technically validProves integrity of the signed claims, not their truth.
OUR PRINCIPLE
Evidence, not guessing
AI detectors estimate probabilities. Provenance Lens reports only technical signals that can be checked, and says plainly when no check is possible.
What we report
Signed C2PA manifests, claim generators, signature validity, metadata fields, hidden Unicode characters and documented provider marks.
View check modulesWhat we never do
Assign a probability to authorship, call text "human-written", or claim a detection capability that no public mechanism supports.
How to verify us
Every check names the library and version that performed it. The scanner is open source. Run it yourself, offline.
Source on GitHubCHECK MODULES
What Provenance Lens checks
Every module checks one clearly defined and documented provenance signal.
C2PA Content Credentials
C2PA 2.2Signed C2PA manifests, claim generators and signature validation results.
Embedded metadata
XMP / EXIF / IPTCEmbedded metadata fields, including generator and software fields.
Unicode anomalies
UnicodeZero-width characters, bidi controls and related Unicode anomalies.
Anthropic text watermark
Provider-specificNo public detection mechanism is currently documented.
Anthropic image C2PA
C2PA 2.2A matching provider claim in a C2PA manifest where present.
How it works
Four traceable steps. Every report records its method and limit.
01FileBytes are read locally.02Local inspectionModules inspect their documented signals.03VerificationSignatures and evidence receive distinct statuses.04ReportSHA-256, toolchain and limits are recorded.
Provider ecosystem
Provider signals are documented, not assumed. A listed name does not mean a public detection mechanism exists.
OPEN SOURCE · CLI
For developers
Install the local scanner. It runs offline, reads the same signals as the hosted version, and emits the same JSON report schema.
- Apache-2.0
- Offline
- JSON
v0.1.0 · Actively developed
pip install provenance-lens
provenance-lens scan ./image.jpg --json{
"schemaVersion": "1.0.0",
"overallStatus": "VALID",
"signalsFound": 2,
"mode": "local"
}Reproduce the report, not just the verdict
Scanner version, libraries, report schema and source remain visible so a finding can be reproduced independently.
- SCANNER
provenance-lens 0.1.0- C2PA
c2pa-web 0.12.4- METADATA
exifr 7.1.3- SCHEMA
report-schema 1.0.0
Learn the standards behind the report
FOR WHOM
Use cases
Check and document provenance signals where traceable decisions matter.
Newsrooms
Check the provenance chain of a submitted image before publication.
- Receive file
- Check signals
- Document finding
Traceable editorial decision
View workflowPublishers and compliance
Record what was verifiable about an asset, and when.
- Record setup
- Archive report
- Support audit
Versioned evidence for internal review
View workflowEngineering
Run provenance checks in CI and fail a build on an invalid manifest.
- Run CLI
- Parse JSON
- Control build
Automatable rules for invalid manifests
View workflowResearchers
Reproducible, versioned reports with the toolchain recorded in every output.
- Pin toolchain
- Record version
- Share result
Comparable checks across time and systems
View workflowFAQ
Can this tell me if text was written by AI?
No. No tool can do that reliably, and this one does not try. It reports whether a documented provenance signal is present. For most text, no such signal is publicly checkable today.
What does it mean if nothing is detected?
That the signals we checked were not found. It does not mean the content is human-written. It may mean the file never carried a signal, the signal was stripped by editing or re-encoding, or no public method exists to check it.
Are my files uploaded?
No. The check runs entirely in your browser. Your file is never sent to our servers, so we never receive it, never store it and never see it. Open your browser's network tab during a scan and you can confirm this yourself.
Is it free?
Yes, and there is no daily limit. Scanning costs us nothing, because it happens on your machine. The local command-line scanner is open source and free as well.
LOCAL ONLY / EVIDENCE FIRST