Verify a Phantom receipt
Paste or drop a receipt and the public key you pinned for its signer. The check runs in this page with your browser's Web Crypto. Nothing is uploaded, there is no ledger lookup, and the page makes no network requests (its Content-Security-Policy forbids them). It can be saved and used offline.
Share a receipt as a QR code
Turn the receipt in the Receipt box into a QR code. Whoever scans it with a phone camera opens this page with the receipt already filled in and checked, with nothing to copy or type. The code is drawn in this page; nothing is uploaded.
Sample receipts
Generated by this repository's C++ phantom_receipt tool with a throwaway software key (not hardware-anchored). Loading one fills both boxes with the throwaway key as the pin. The tampered ones have one field altered after signing; the attacker-signed one is valid under the attacker's key but not under the pinned one.
Samples with an independent timestamp
The first one loads a receipt plus a real token from the public FreeTSA service (it signed the receipt's hash on 2 October 2026). The second one changes one field of the receipt and keeps the same token. The timestamp check must then say INVALID, because the bytes are no longer the ones that were stamped. Then press Verify receipt.
Check an attestation record
A receipt shows a file has not changed. It does not show who made, captured, signed or sent it. An attestation record is a short signed statement of who did what to which file, and how that person was identified. This checks one, here in your browser. Nothing is uploaded.
Sample records
Signed with throwaway test keys (not hardware-held). Loading one fills the boxes, using the sample signer's key as the pin where the sample says so.
What a VALID record means: the holder of the signing key made exactly this statement, and it has not been altered. If you pinned that key in advance, the statement came from the person or witness behind it. What it does not mean: that the statement is true, that the stated way of identifying the person was really carried out, or when it was made. The time is the signer's own claim. Seal the record in a receipt to get an independent time.
What a VALID result means: the record is unaltered since it was sealed, it is covered by the signed chain tip or Merkle root, and the signature verifies under the key shown. What it does not mean: it does not identify the signer unless you pinned the right key, it does not show the recorded decision was correct, and it does not by itself establish admissibility (the design supports self-authentication; confirm with counsel). Differences from the C++ verifier: pins are compared as decoded key bytes rather than PEM text, and only ECDSA P-256 keys are accepted.
About the timestamp check: a VALID timestamp means this exact receipt existed no later than the time the outside authority signed. It does not mean the contents are true. This page does not check whether the authority's certificate was later revoked. A free service such as FreeTSA has no uptime or accuracy promise. The check uses the certificate dates at the stamped time, not today's date. If you paste the receipt as text, line endings or a trailing newline can differ from the original file; load the original file when you can.