Submit your document
Your document is encrypted in this browser before upload. We never see your plaintext.
Your email
Used for invoicing and to notify you when your document is ready. Your encryption key is generated randomly in this browser and never leaves it β you must use this same browser and device to decrypt your result, so bookmark your download link.
Generate your encryption key
Move your mouse randomly within the box below. This adds entropy to your unique key. The key never leaves your browser.
Upload your document
Accepted: .docx, .pdf, .odt β max 60 MB
Drag & drop or
Encryption happens entirely in this tab. The server receives only ciphertext.
Uploaded successfully
We will notify you by email when the correction is ready. You can also check the status below.
Check statusβ οΈ Important: Your decryption key is stored in this browser. To decrypt your result, use the same browser on the same device.
Canary token β prove no LLM sees your plaintext
- Go to canarytokens.org and create a free Web bug / URL token. Enter your email so you get alerted if it fires.
- Paste the canary URL anywhere in your document before uploading β e.g. as a hidden footnote:
http://canarytokens.com/traffic/abc123.jpg - Submit the document and wait for processing.
- If the canary never fires, your plaintext was never fetched by any external service or LLM. Our local NER anonymises the text before any further processing, and the canary URL is preserved intact so it would fire if anything external ever touched the plaintext.
Inspect the upload yourself with browser DevTools
- Before uploading, open DevTools: F12 or Cmd β + Option + I
- Go to the Network tab and check Preserve log.
- Upload your document. You will see one
POST /api/uploadrequest. - Click the request and inspect the Payload tab. The
encrypted_docfield is base64 ciphertext β not your document. There is no other outgoing request. Theconnect-src 'self'Content Security Policy on this site technically prevents any JS from sending data elsewhere.
Verify the operator public key
Your document is encrypted with the operator's RSA public key (embedded in crypto.js). Only the operator's private key β stored exclusively on their local machine, never on this server β can decrypt it. You can verify the key is authentic:
- View the public key served by this site: /pubkey
- Open
crypto.jsin DevTools β Sources and search forOPERATOR_PUBLIC_KEY_PEM. The key must match. - The operator publishes the same key fingerprint on an independent channel (GitHub / Keybase) so you can confirm it hasn't been swapped.
Does OCR (scanned PDFs) leak your data?
For scanned PDFs, text is extracted using Tesseract β free, open-source software that runs entirely on the operator's own machine. No cloud OCR service (not Google Vision, not AWS Textract, not Azure) is ever used. This happens before anonymisation, and involves no network call of any kind β the source file (agent/extract.py) imports only local libraries (pytesseract, pdf2image, pymupdf4llm) and contains no HTTP client at all.
One honest limitation: unlike the encryption step above, OCR doesn't happen in your browser β it runs on the operator's machine, so you can't watch it happen live the same way. What you can verify: the source code itself (no network imports, so a leak would require lying source code, not just a misconfiguration), and β if the OCR-review step is enabled for your job β that the raw OCR text sent back to your browser for review is ciphertext, using the same DevTools method as the upload check.