Glossary · Folio G
vocabulary, defined plainly
§ Sixteen terms, four clusters

Every term the rest of the site uses, defined.

No jargon dictionary; just the words we keep saying, defined so the rest of the documentation reads cleanly. Cross-linked to the blog posts that go deeper.

§ Cryptography & primitives

The crypto layer that makes the receipt verifiable.

SHA-256
A 256-bit cryptographic hash function.

Standardized by NIST in 2001 and the workhorse of modern cryptography. Receipts.you hashes the bytes of your screenshot file with SHA-256 in your browser via WebCrypto's SubtleCrypto.digest. The output is a 64-character hex string. SHA-256 is one-way: you cannot reverse the hash to recover the file. Collisions (two different files with the same hash) are computationally infeasible.

See also: WebCrypto · ECDSA P-256 · verdict ladder
ECDSA P-256
Elliptic-curve signature algorithm we use to sign receipt hashes.

Elliptic Curve Digital Signature Algorithm over the NIST P-256 curve. Universally supported by browsers, Workers, and openssl. Our worker signs each receipt's hash + timestamp with our private P-256 key; our public key is published at /.well-known/receipts-pubkey.pem. Verification works offline with openssl + our public key.

See also: SHA-256 · public key · offline verification
OpenTimestamps anchor
External proof that a hash existed by a given Bitcoin block's timestamp.

OpenTimestamps is a protocol for proving a file existed at a specific time by committing its hash into the public Bitcoin blockchain. Many hashes are aggregated into a Merkle tree and the tree root is embedded in a single Bitcoin transaction. Anyone can verify the hash existed by the block's timestamp using the Merkle inclusion proof and the Bitcoin block history — no trust in receipts.you required. Our cron upgrades each receipt with an OTS anchor within ~30 minutes of sealing. Read the deep-dive.

See also: Bitcoin · Merkle proof · external anchor
WebCrypto
Browser-native cryptography API. Our privacy story depends on it.

The SubtleCrypto interface exposes browser-native SHA-256, signing, encryption, and key management without third-party libraries. Receipts.you uses SubtleCrypto.digest to compute file hashes in your browser — that's why the image bytes never leave your device. Available on all modern browsers over HTTPS. Read the deep-dive.

See also: SHA-256 · privacy
Perceptual hash (pHash, dHash)
A fingerprint of an image's content that survives recompression.

SHA-256 changes completely if a single byte changes; perceptual hashes measure what the picture looks like rather than what bytes it has. We compute two: pHash (DCT-based, 64-bit) and dHash (gradient-based, 64-bit). The pair lets us return useful verdicts (recompressed, similar) even when a platform has re-encoded your file. AND-gated thresholds prevent the false-positive failure modes either hash would have alone. Read the deep-dive.

See also: verdict ladder · SHA-256
DWT+DCT+SVD watermark
The robust invisible watermark the Snitch Tracker embeds in per-recipient variants.

A frequency-domain watermark built from Discrete Wavelet Transform + Discrete Cosine Transform + Singular Value Decomposition. Embeds a 60-bit recipient ID into the U channel of an image, surviving JPEG re-encoding down to q40, resize 0.5×-2×, and partial crops up to ~50%. Recovers reliably from canonical platform pipelines (Instagram, Twitter, Telegram). 500 lines of browser JavaScript; runs in <1 sec per quadrant. Read the deep-dive.

See also: Snitch Tracker · perceptual hash
§ Product concepts

What each surface in the product is and does.

Receipt
A signed, timestamped record that a file existed at a specific moment.

Each receipt contains: a SHA-256 hash of the original file, two perceptual hashes, an ISO timestamp, an ECDSA signature, an OpenTimestamps inclusion proof (after ~30 min), and any user-supplied note. About 400 bytes total. The receipt page at receipts.you/r/<id> shows all this and provides a verify drop-zone. The receipt proves WHEN the file existed, not WHAT it depicts.

See also: receipt page · verify
Verdict ladder
The four-tier outcome of dropping a file on /verify.

Possible verdicts, from strongest to weakest match: identical (byte-for-byte match via SHA), recompressed (same picture, re-encoded by a platform — pHash distance ≤6 AND dHash distance ≤9), similar (cropped or mildly edited — pHash ≤14 AND dHash ≤16), mismatch / qr_pasted (different image entirely — either hash distance >25).

See also: perceptual hash · verify
Snitch Tracker
Per-recipient invisible watermarking with cryptographic attribution.

Mint one invisibly-watermarked copy per recipient (subscriber, friend, leak suspect); when a leaked copy surfaces, the extractor identifies which variant ID was leaked, naming the leaker. The watermark is browser-side, image bytes never leave your device, no monthly fee. Designed for the single-leaker threat model.

See also: DWT+DCT+SVD watermark · variant ID
Variant ID
The 60-bit identifier embedded in each Snitch Tracker watermarked copy.

When you mint per-recipient variants, each gets a unique 60-bit ID. The IDs map to your recipient list (stored locally — we don't see names). When a leak is extracted, the variant ID points to the recipient. CRC32 framing makes false positives practically impossible.

See also: Snitch Tracker · DWT+DCT+SVD watermark
QR-stamped composite
Your original screenshot with a small QR code added in the corner.

Our worker generates a composite image: your original screenshot plus a tiny QR encoding the receipt URL. Both the original and the composite are hashed and stored. Sharing the composite means anyone with a phone camera can verify by scanning the QR; sharing just the receipt URL also works.

See also: receipt · verify
§ Workflow

How users actually interact with receipts.

Seal
The act of creating a receipt for a screenshot.

Workflow: drop a file on /seal, your browser computes the hashes, our worker signs the hash and returns a receipt URL + QR-stamped composite. About fifteen seconds end to end. The image stays on your device throughout.

See also: receipt · verify
Verify
Dropping a file on /verify to check it against a receipt.

Drop any image on /verify; your browser hashes it locally and our worker returns a verdict from the verdict ladder. If the image has a receipts.you QR, we also look up the original receipt and show its timestamp and signature. If not, the verdict is mismatch.

See also: verdict ladder · receipt
Drop a screenshot →
free · no signup · stays in your browser