Scroll to walk through the 6 steps. Nothing leaves your browser unencrypted.
Drop, browse, or Ctrl+V from clipboard. Supports PNG, JPEG, GIF, WebP, BMP, TIFF, ICO. Up to 25 MB per file.
A random 256-bit seed and 96-bit IV are generated via crypto.getRandomValues(). These never leave your device. Ever.
AES-256-GCM for authenticated encryption, HKDF-SHA-256 for key derivation from the random seed, and HMAC-SHA-256 (truncated 128-bit) for integrity verification. All three run in your browser via WebCrypto.
Ciphertext is wrapped with server-side AES-256-GCM + HKDF, then 3 PQC algorithms: ML-KEM-1024 (key encapsulation), ML-DSA-87 (signatures), SLH-DSA-SHAKE-256s (hash-based signatures). Hybrid key via HKDF-SHA3-256. Data split with Reed-Solomon 4+2 erasure coding.
The decryption key lives in the URL # fragment. Fragments are never sent to servers by browsers. Only the full link decrypts.
Recipient's browser reads the fragment, fetches the encrypted blob, verifies HMAC, decrypts via AES-256-GCM, and renders. Server never sees the image.
Hybrid key combines classical AES with PQC ML-KEM via HKDF-SHA3-256. Even if one layer breaks, the other still protects your data.