The image never leaves. Here's exactly how.
No hand-waving. This page is the whole mechanism — including the parts we can't promise — so you can decide whether it's right for your scan.
- On your device
OCR & redaction
A WebAssembly OCR engine reads the text off your photo entirely in your tab — the image is never uploaded. A tokeniser and a multilingual name model then find names, emails, phones, postal addresses, cards, national IDs, IPs and reference numbers in that text, and swap a realistic surrogate over each. This step makes zero network connections — watch the scanline stay flat.
- Leaves your device (optional)
Surrogate-only relay
Only if you press "Ask AI about this scan" does anything leave the browser — the cloaked text is sent to an AI model, through the CloakAPI gateway, carrying a cryptographic pre-tokenisation proof (a MAC over the exact bytes). The gateway relays those bytes verbatim. Your real values, and the map back, are never in the request.
- Back on your device
Re-identify & receipt
The answer returns still carrying the surrogates. cloak-scan maps them back to your real values locally, then signs a content-free receipt: category counts, the engine's identity, the SHA-256 of the exact bytes that egressed, and the claims
raw_bytes_egressed: 0andraw_image_bytes_egressed: 0.
What is guaranteed
- A strict Content-Security-Policy hard-limits every network connection to this origin plus the CloakAPI gateway — nothing else can be contacted, by construction.
- OCR and cloaking run before any relay and make no network calls. The raw image bytes are never included in any request this app makes, ever — the "ask" relay is fail-closed: if it can't obtain the privacy proof, nothing is sent.
- Only surrogate text is ever transmitted; the re-identification map stays in your browser's memory.
- Nothing you scan is stored on any server of ours — there is no server behind this site, only the static files and the gateway relay.
- Every ask can mint an offline-verifiable receipt you (or anyone you show it to) can check without trusting us.
What we don't claim
- OCR reads what a scan clearly shows, not what a person could infer. Blurry photos, unusual fonts and handwriting reduce accuracy — always check the extracted text before asking a question about it.
- Detection is very good, not omniscient. An unusual identifier the models don't recognise stays in the text — always glance at the "preview what leaves" view before you ask.
- English is the only OCR language bundled today (see the honest scope note in BUILD-READY). PDFs aren't read yet — export a page as an image in the meantime.
- Surrogates are realistic, gender- and locale-matched where the engine can; for scripts it can't morph, it falls back to a safe neutral stand-in.
- If the AI model re-spells a surrogate, that altered token simply stays as a safe placeholder in the output — never your real value.
- The "ask" step itself is performed by a third-party model via the gateway. It sees fluent surrogate-bearing text, and it is billed. That's the one thing that leaves — on purpose, and only when you ask.
Verify a receipt
Paste any cloak-scan receipt JSON to check its signature offline. This runs the same on-device verification a recipient would — no server involved.