Verify a proof
An ETcH proof can be verified at any time, by anyone.
How it works
ETcH anchors a cryptographic fingerprint (SHA-256) of your file — or your bundle — on the Ethereum blockchain. To verify a proof, simply recompute that fingerprint and compare it to the Ethereum record. Three cases:
Prove that a specific file existed at a given date
- Compute the SHA-256 hash of your file. You can use any tool (shasum -a 256 yourfile on macOS/Linux, Get-FileHash on Windows, or any online tool).
- Compare that hash with the one recorded on Ethereum. You can do this via Etherscan by looking up the transaction hash from your certificate.
- If they match, the file existed — in that exact form — at the anchored date.
Easier: drop your file in the tool above (File tab). The hash is computed in your browser and compared to the Ethereum record automatically.
This works even if ETcH no longer exists — the Ethereum record is permanent.
The specific case of bundles
When you anchor multiple files, ETcH does not anchor each file individually on Ethereum — it anchors a single session hash that covers all of them. The individual hash of each file, referenced by its filename, is stored in bundle_manifest.json — included in your proof kit.
Your proof kit is self-contained: it holds everything needed to verify your proof independently, without ETcH, forever.
Each file has its own hash, stored in bundle_manifest.json. The session hash — anchored on Ethereum — is the SHA-256 of that manifest. The chain runs in both directions.
Why this certifies every individual file
The Ethereum blockchain records the session hash at a specific date and time. This record is permanent and immutable — no one can alter it.
The session hash is the SHA-256 of bundle_manifest.json, which lists every anchored file by name, size, and individual hash (sorted alphabetically). If the session hash is certified, the manifest is certified too.
Each file's individual hash appears in that certified manifest. If the manifest is certified, every hash it contains is certified.
Each individual hash is the SHA-256 of its file — a unique mathematical fingerprint. If the hash matches your file, the file is identical to what was anchored.
The session hash is not a signature or a declaration — it is a mathematical fingerprint of the manifest itself. Change a single byte in any file, and the chain breaks: the manifest changes, the session hash changes, and it no longer matches what Ethereum recorded. That is what makes it unfalsifiable.
The chain: Ethereum → session hash → file list → individual hash → your file.
Advanced tool: verify a specific file in a bundle
You have a file that was part of a bundle, and the bundle_manifest.json from the corresponding proof. This tool compares the file's hash with the one recorded in the manifest — without querying Ethereum.
Typical use case: you received a file from a third party, along with the proof ZIP of the bundle it belongs to. You want to verify that it is indeed the original file, without making any network request.
Open your proof ZIP: bundle_manifest.json is at the root, original files are in the originals/ folder.
Compute a file hash
Drop a file to compute its SHA-256
Nothing is uploaded. The hash is computed in your browser.
Compare with manifest
Drop bundle_manifest.json to compare
From the root of your proof ZIP