SecurePaper Offline Decryptor works without internet

This single file decrypts any SecurePaper document, even if securepaper.app no longer exists. Save it with your important papers. It runs entirely in your browser: nothing you type ever leaves this page.

Read the QR codes with any QR scanner app and paste the decoded text here.

Format specification

QR chunking: long documents are split into codes of the form SP:<n>/<total>|<chunk>. Concatenate the chunks in order (1, 2, 3, …) to recover the full code text.

v2 (current): 2|<base64> where base64 decodes to iv(12 bytes) || ciphertext || tag(16 bytes), AES-256-GCM. The key is 64 hex characters (32 bytes).

v2 passphrase: 2p|<iterations>|<base64> where base64 decodes to salt(16) || iv(12) || ciphertext || tag(16). Key = PBKDF2-SHA256(passphrase, salt, iterations, 32 bytes), AES-256-GCM.

v1 (legacy): a hex string whose first 6 characters are a fragment of the IV (ignore them), the rest is AES-256-CBC ciphertext (PKCS#7 padding). The legacy key string is <64 hex key>iv<32 hex IV>.

Any standard cryptography library can decrypt these formats; this page does it with the browser's built-in WebCrypto.