Step-by-step guide
How to verify a ProofSnap evidence package
In 2026, anyone can verify a ProofSnap evidence package in three ways: in the ProofSnap side panel, in the free Trust Verifier on getproofsnap.com, or with the verify.sh and verify.ps1 scripts inside the ZIP. Each one recomputes the SHA-256 hash of every file, checks the RSA signature over manifest.json and reports the timestamps that show when the package existed.
Works for
Web, video, session and file packages
Three routes
Side panel, website, scripts
Account
Not needed on the website
Three ways to verify
All three check the same thing: that every file is the one that was sealed at capture time, and which timestamps prove when. Pick the one that suits the person doing the checking.
Route A · Steps 2 to 6
In the ProofSnap side panel
For you, right after the capture or before you send the package. Needs ProofSnap and a sign-in.
Route B · Step 7
On this website
For the other side, a court or anyone else. Any browser, no installation, no account.
Route C · Steps 8 to 10
With the scripts in the ZIP
For an expert who wants a check that runs on their own computer, independent of ProofSnap.
What a successful verification proves
Verifying a ProofSnap evidence package answers three separate questions. Integrity: every file still has the SHA-256 hash recorded in manifest.json. Coherence: the RSA signature in manifest.sig matches the manifest, so the list of hashes was not edited either. Time: an OpenTimestamps proof shows the manifest existed no later than a given Bitcoin block. An EU qualified timestamp from Disig a.s., a Qualified Trust Service Provider on the EU Trusted List, ties it to a date and time.
"The TSA's role is to time-stamp a datum to establish evidence indicating that a datum existed before a particular time."
The signature proves integrity: its key is generated inside the package, and the timestamps prove time. The scripts verify.sh and verify.ps1 run the same four checks (file integrity, manifest signature, eIDAS token, Bitcoin anchor) and end with one of three exit codes: 0 for PASS, 1 for FAIL and 2 for INCOMPLETE.
The three routes compared
The side panel verifier reads packages up to about 1.8 GB, and browser memory can run short from about 900 MB. For larger packages, use verify.sh or verify.ps1, which check any size file by file.
| A: side panel | B: website | C: scripts in the ZIP | |
|---|---|---|---|
| Who uses it | You, before sending | Anyone you send it to | An expert on their own computer |
| ProofSnap account | Required | Not needed | Not needed |
| Runs on | Chrome or Edge with ProofSnap | Any modern browser | macOS, Linux, Windows |
| Uses ProofSnap servers | For the two timestamp checks | For the two timestamp checks | No |
| Large videos | Up to about 1.8 GB | Limited by browser memory | No size limit |
Before you start
- The evidence package as a ZIP, exactly as it was downloaded.
- An internet connection for the timestamp checks in the side panel and on the website.
- For a file certification: the original file, if you want to match it against the certificate.
Step 1, everyone
Work with the original ZIP
Every route below checks the ZIP exactly as ProofSnap produced it, whether it holds a web capture, a video, a multi-tab session or a file certification. That ZIP is also what you hand over to the other side, your lawyer or the court. Keep the original untouched and work on copies. What each file contains is explained in how to read an evidence package.
- 1The ZIP. Renaming the ZIP file itself is harmless: the checks look at the files inside. Do not add files to it, remove files from it or zip it again.
- 2manifest.json. The list of every file with its SHA-256 hash, signed in
manifest.sigwith the key inpublickey.pem. When present, the Bitcoin and eIDAS timestamps are issued for this file. - 3verification/. The scripts and the plain-text guide for checking the package without ProofSnap, see steps 8 to 10.
- evidence.pdf
- provenance_certificate.pdf
- screenshot.jpeg
- page.html
- page.mhtml
- domtextcontent.txt
- metadata.json
- c2pa.json
- chain_of_custody.json
- forensic_log.json
- forensic_log_summary.txt
- 2manifest.json
- manifest.sig
- publickey.pem
- manifest.json.ots
- manifest.json.tsr
- eidas_validation.json
- 3verification/
- verify.sh
- verify.ps1
- VERIFICATION_GUIDE.txt
Route A
Verify in the ProofSnap side panel
The Trust Verifier is built into the extension, next to the capture tools.
Step 2, in the side panel
Find the ProofSnap Trust Verifier
Open the ProofSnap side panel and scroll down past the capture options. The ProofSnap Trust Verifier card sits right above the File Certifier and starts collapsed. You need a ProofSnap account with a plan or credits to see it; anyone without ProofSnap uses the website (step 7).
- 1ProofSnap icon. Opens the side panel. The tab you have open does not matter.
- 2ProofSnap Trust Verifier. Click the title to open the card.
1
Vintage desk lamp
Listing #4821 · posted by seller_77
$120
ProofSnap - Digital Evidence Capture

ProofSnap Trust VerifierStep 3, in the side panel
Upload the ZIP and click Verify zip file
The verifier accepts a web capture or video package, a session package, a file certification, a combined certification of several files and a batch package with one ZIP per file. It works out the type from the manifest by itself.
- 1Click to upload or drag and drop. Pick the ZIP. Its name appears in blue under the drop area.
- 2Verify zip file. Runs all checks in your browser. The two timestamp checks query ProofSnap's verification service, so stay online. Very large packages (from about 900 MB, typically long videos) may run out of browser memory; above about 1.8 GB the verifier refers you to the scripts in step 8.
ProofSnap Trust VerifierClick to upload or drag and drop
Zip file
proofsnap_20261015_094107.zip
Step 4, in the side panel
Read the verdict
The verdict sums up all checks in one line. Hover over it to see a short explanation.
- 1Integrity: match. All cryptographic checks passed: the files match the manifest, and the manifest matches the signature made with the key in the package. The verifier shows it only after it has actually checked the signature and recomputed the file hashes.
- 2Integrity: modified. The evidence has been altered or is incomplete: at least one check failed. See the section on what to do below.
- 3Show technical verification. Opens the individual checks (next step).
ProofSnap Trust VerifierClick to upload or drag and drop
Zip file
proofsnap_20261015_094107.zip
Step 5, in the side panel
Open the technical verification
Each line is one check. A blue bar means passed or for information, a red bar means failed. Which lines appear depends on what the package contains.
- 1manifest.json. The RSA signature over the manifest checks out with the public key in the package. It proves the manifest has not changed since it was signed.
- 2File Integrity. Every file listed in the manifest is hashed again with SHA-256 and compared. The signature and the key are written after the manifest, so they are checked for presence. Session packages include the files of every tab, video packages the recording.
- 3Chain of custody. The capture time is plausible (not in the future, not older than 30 years),
forensic_log.jsonmatches the hash recorded inchain_of_custody.json, its hash chain is recomputed step by step, and the final chain hash matches. The line naming the ISO standard repeats whatchain_of_custody.jsondeclares; it is not an assessment. - 4Capture context. Extension version, how many time servers confirmed the capture time, the device integrity score and the number of recorded operations. A session package also lists every tab it covers.
The timestamp lines
- 5OpenTimestamps. The Bitcoin block the manifest is anchored in and its date. Shortly after a capture this line says pending (see step 11). Not on Essential captures unless an eIDAS or Video SnapPack credit was used.
- 6EU Qualified Timestamp. The qualified timestamp is valid for this manifest: issuer and time in UTC. Disig a.s. is a Qualified Trust Service Provider on the EU Trusted List.
- 7EU Qualified Timestamp (LTV). A second check that needs no server: hash, signature, certificate chain and revocation status, all from
eidas_validation.jsonin the package. If the eIDAS service cannot be reached, this check runs on its own. - 8Issuer. A reminder that the signing key is generated inside the package: the signature proves integrity, the timestamps prove time.
Step 6, file certifications
Check the original file against the certificate
For a file certification the verifier adds a box that compares any file you drop on it with the certified hash. Use it to show that the copy you or the other side hold today is the very file that was certified. The file is hashed in your browser and not uploaded.
- 1The certification ZIP. Verify it first, as in steps 3 to 5.
- 2Verify original file matches certificate. Drop the original. File matches certificate means this file existed at the certified date and time. File does NOT match means the hash differs: this is not the file that was certified. You can drop several files at once, for example the originals of a combined certification.
- 3Verdict. Concerns the package itself, as for any other package.
- 4Package type. File Certification with the certified hash, or Combined File Certification with the number of files.
ProofSnap Trust VerifierClick to upload or drag and drop
Zip file
file-certification-lease-agreement-2026-10-15.zip
Verify original file matches certificate:
Drop original file or click to select
3921ff4b3c507df79d19959b1adb1f7c8a505ad4c2d221a5871c31df862b345cRoute B
Verify on the website
For anyone you send the package to. Nothing to install.
Step 7, on the website
Verify on getproofsnap.com, no account needed
The other side, a court or an expert can open the ProofSnap Trust Verifier on this website in any browser, without ProofSnap and without an account. It runs the same kinds of checks and lists every result line by line. The ZIP is opened in the browser; for the Bitcoin and eIDAS checks the page sends the manifest, its hash and the timestamp tokens to ProofSnap's verification service.
- 1Drop the ZIP. Or click to choose it.
- 2Verify Evidence Package. Starts the checks.
- 3Verification Results. A blue check mark means the check passed, a dark X that it failed.
- 4Package details. Type, ID and capture time from the manifest.
- 5Manifest signature verified. Same check as in the side panel.
- 6Hash matches. One line per file. A changed file shows Hash mismatch, a missing one File missing.
- 7Chain of custody. Forensic log hash, hash chain, standard and device integrity.
- 8Timestamps. The Bitcoin block with its date in your local time, the eIDAS timestamp and the offline LTV check. For a single-file certification the page also checks the original file inside the ZIP automatically.
Verify Digital Evidence Integrity Online
Click to upload or drag and drop
ProofSnap ZIP evidence packages only
proofsnap_20261015_094107.zipVerification Results
Route C
Verify without ProofSnap
Every package carries its own verification scripts in the verification folder. They are listed in the signed manifest, so they are covered by the same signature as the evidence.
Step 8, without ProofSnap
Run verify.sh on macOS or Linux
For a check that relies on nothing from ProofSnap, unzip a copy of the package and run the script inside it. It needs only what macOS and Linux already have: a shell, awk and a SHA-256 tool (shasum, sha256sum or openssl), plus openssl for the signature and eIDAS steps. It writes nothing into the package.
- 1Start it. From the unzipped folder:
bash verification/verify.sh. - 2File integrity. Recomputes the SHA-256 of every file the manifest lists: OK, MISMATCH or MISSING. A file in the folder that the manifest does not list is reported as NOT COVERED.
- 3Manifest signature. Checks
manifest.sigwith openssl. Verified OK is openssl's own answer. - 4eIDAS. Compares the hash inside the qualified token with
manifest.json, checks the root certificate in the package against the published fingerprint of CA Disig QCA4 and checks the token's signature. It prints the openssl command for the full certificate chain. - 5OpenTimestamps. Prints the command to check the Bitcoin anchor with the OpenTimestamps client (
ots), which you install separately. - 6RESULT. PASS (exit code 0), FAIL when a check ran and did not pass (1), or INCOMPLETE when a tool was missing (2), which does not count against the package.
Step 9, without ProofSnap
Run verify.ps1 on Windows
Unzip a copy of the package, open PowerShell (version 5 or later) in that folder and run the command below. The script runs the same four steps as verify.sh.
- 1Start it.
powershell -ExecutionPolicy Bypass -File verification\verify.ps1from the unzipped folder. - 2File integrity. Uses Windows' own Get-FileHash and also compares the SHA-512 values the manifest carries. This part needs nothing else.
- 3Without OpenSSL. Windows ships without it, so the signature and eIDAS steps report that they could not run. Install OpenSSL 3 and run the script again for a full check.
- 4RESULT. The result is INCOMPLETE only because two checks could not run; everything that ran passed.
Step 10, without ProofSnap
Or follow VERIFICATION_GUIDE.txt by hand
Experts who prefer to type every command themselves, or who cannot run scripts, find the manual procedure in verification/VERIFICATION_GUIDE.txt. It is part of the signed package, like the scripts.
- 1Evidence ID. Ties the guide to this package.
- 2A) The scripts. The commands from steps 8 and 9.
- 3B) Online. The address of the Trust Verifier, step 7.
- 4C) By hand. Four steps, each with the exact command.
- 5Step 1. Recompute each file's SHA-256 and compare it with the manifest.
- 6Step 2. The openssl command for the manifest signature. Further down: the eIDAS command with notes on OpenSSL 3 versus the LibreSSL that macOS installs under the name openssl, and the OpenTimestamps command.
How to verify the eIDAS and Bitcoin timestamps by hand
The eIDAS timestamp with OpenSSL
The qualified timestamp of a ProofSnap package is the file manifest.json.tsr.
- Copy the value of the
rootCaPemfield ineidas_validation.jsoninto a file named tsa-root.pem. - Compare it with the published fingerprint of CA Disig QCA4 that verify.sh prints.
- From the unzipped folder, run
openssl ts -verify -in manifest.json.tsr -data manifest.json -CAfile tsa-root.pem.
Use OpenSSL 3, not the LibreSSL that macOS installs as openssl.
The Bitcoin anchor with the OpenTimestamps client
Install the OpenTimestamps client (ots) and run ots verify manifest.json.ots -f manifest.json. A confirmed proof names the Bitcoin block, which shows that the manifest existed no later than that block. A proof that is still pending needs another run a few hours later.
Results
Two results that need a second look
A pending Bitcoin timestamp, and a package reported as modified.
When the Bitcoin anchor is pending
Verify again a few hours later
A Bitcoin timestamp is final only once a Bitcoin block includes it. Right after a capture the proof is submitted but not yet confirmed. This is normal and does not change the verdict. To check an .ots proof on its own, see how to verify an OpenTimestamps file.
- 1Pending. Submitted: pending Bitcoin confirmation (typically 1-3 hours). On the website: OpenTimestamps: Proof submitted, pending confirmation.
- 2Verified. Verify the same, unchanged ZIP again after a few hours: the line now names the Bitcoin block. It shows that the package existed no later than that block. Do not try to update or replace the .ots file.
Minutes after the capture
A few hours later, same ZIP
When the verdict is modified
Do not repair the ZIP: go back to the original
Open Show technical verification: the red line names the check and usually the file. Do not try to fix the package; any change makes it fail again. Verify the original download instead. The most common causes are harmless handling mistakes:
- 1A file was changed. Opening a file inside the package and saving it, even without visible edits, or renaming it, changes what the manifest vouches for.
- 2The package was unpacked and zipped again. Re-zipping often puts everything one folder deeper, so the verifier no longer finds
manifest.jsonat the top of the ZIP. Some tools also add their own hidden files.
If the original download also shows modified, keep it as it is and write to support@getproofsnap.com with the red line from the technical verification.
A file inside was opened and saved again
The package was unpacked and zipped again
Common questions
verify.sh or verify.ps1 from the package (step 8 or 9): they read the files one by one and have no size limit.ts -verify command reports an error even on a valid timestamp. verify.sh says so and runs its signature check another way. For the full chain, use OpenSSL 3.Evidence anyone can check
Received a ProofSnap package? Check it in the Trust Verifier. Need to capture your own? Install ProofSnap.
Install ProofSnap, 7 days freeAlso available for Microsoft Edge
More guides: How to capture a web page · Long video evidence · How to certify a file · How to read an evidence package