Public verifier · runs in your browser

Verify any Project Ledger receipt.

Paste a signed receipt and the public key it was signed with. The verifier runs entirely in your browser using the published Receipts Protocol v0.1 — no server call, no login, no Project Ledger dependency at runtime. This is what "openly verifiable" actually means.

🔒 Your receipt never leaves this tab. All cryptographic work happens locally via audited Ed25519 + SHA-256 primitives.

Input

Samples:

Verification recipe — the same one the SDK uses

  1. Take the receipt object and set integrity.receipt_hash = "".
  2. Canonicalize per RFC 8785 (sorted keys by UTF-16 code units, no whitespace, RFC 8259 escapes).
  3. Compute SHA-256 hex of the canonical bytes. This is the expected_receipt_hash.
  4. Compare to the original integrity.receipt_hash. They must match.
  5. Canonicalize the full receipt (with the populated receipt_hash) — these are the bytes that were signed.
  6. Ed25519-verify signatures[0].sig against those bytes and the supplied 32-byte public key. Must verify.
  7. If a previous receipt is supplied, check integrity.previous_receipt_hash equals the previous receipt's integrity.receipt_hash.