This page explains exactly how SecurePaper protects your data, where every piece of information lives, and what the format on your printed paper means — so you can verify our claims instead of taking them on faith.
All encryption and decryption runs entirely in your browser, on your device. The text you type is encrypted locally before anything else happens, and your plaintext never leaves your device. Our server never receives, processes, or stores the content of your messages. For logged-in users, the only document-related data we store is an optional title and a creation date — never the encrypted or decrypted content itself.
| Mode | Encryption keys | Ciphertext (your document) |
|---|---|---|
| Guest (no account) | Stored only in your browser's localStorage, on your device. | Only on your printed paper. We store nothing. |
| Account | Stored on our server (Supabase), protected by row-level security and your login, so you can access your keys from any device. | Still only on your printed paper. We never store message content. |
The trade-off, stated plainly: if you create an account, you are trusting our infrastructure with your encryption keys. That is a real trade — you gain multi-device access and protection against losing your keys, but a compromise of our database combined with access to your printed papers could expose your data. If you don't want to make that trade, you have two alternatives:
Your printed papers should outlive this service. The complete format is documented below, so anyone with standard cryptographic tools can decrypt a SecurePaper document without our software.
Multi-part codes are SP:<n>/<total>|<chunk>; concatenate chunks in order to reconstruct the ciphertext. Single-part codes carry the ciphertext directly, with no prefix.
2|<base64(iv12 || ciphertext || tag16)> — AES-256-GCM with a 12-byte IV and a 16-byte authentication tag. The key is 64 hex characters (32 bytes).
2p|<iterations>|<base64(salt16 || iv12 || ciphertext || tag16)> — the key is PBKDF2-SHA256(passphrase, salt, iterations, 32 bytes).
A hex string whose first 6 characters are an IV checksum prefix; the rest is AES-256-CBC ciphertext. The legacy key string is <64 hex key>iv<32 hex IV>.
Your papers stay decryptable. The data format is fully documented above, and we publish a standalone offline decryptor — a single HTML file that works without an internet connection, on any modern browser:
We recommend storing a copy of this file — on a USB drive or printed instructions — together with your important papers, so your backups never depend on our servers being online.
No system provides absolute security, and we won't claim otherwise. Things SecurePaper cannot protect you from: