How Twinpad's end-to-end encryption works

How Twinpad keeps your text, passwords and files private: keys derived in your browser, AES-256-GCM, and a server that only ever sees ciphertext.

"End-to-end encrypted" is easy to claim and hard to check. This page explains exactly what happens to your data in Twinpad, what the server can and can't see, and where the limits are. No marketing, just the mechanism.

The short version

From password to keys

When you create a session, your browser generates an 8-character password from a 31-character alphabet that leaves out look-alikes like 0/O and 1/I/L, plus a random 16-byte salt. From these it derives keys:

password + salt
  └─ PBKDF2-SHA256, 310,000 iterations → master key
       ├─ HKDF "twinpad/enc/v1"  → AES-256-GCM key  (stays in the browser)
       └─ HKDF "twinpad/auth/v1" → auth token       (server stores only its SHA-256)

The two keys are independent: knowing the auth token doesn't help anyone decrypt. The server keeps only a hash of the auth token, so it can check that a device joining knows the password without ever learning the password or the encryption key.

What gets encrypted

Every piece of content is encrypted separately with a fresh random 12-byte IV. Each blob also carries additional authenticated data that binds it to its room and its purpose, and for file chunks, to the chunk's position. A server that tried to swap, reorder or replay blobs between rooms or files would make decryption fail instead of showing wrong data.

DataServer sees
Shared text (every edit)Encrypted blobs
Secrets, labels and valuesEncrypted blobs
File contentsEncrypted 1 MB chunks
File names and typesEncrypted
Device namesEncrypted
File sizes, number of devices, timingVisible (needed for quotas and sync)

The link and the QR code

A session link looks like twinpad.me/r/123456#k=ABCD2345. The part after # is the URL fragment, which browsers never send to a server. Twinpad reads the password from it and immediately removes it from the address bar, so it doesn't stay in your history or show up in a screenshot. Anyone who has the full link can join, so share it only with your own devices or people you trust, and lock the room once everyone's in.

Protection against guessing

Hardening in the browser

Limits you should know about

Honest security means stating the trade-offs:

Twinpad is designed for moving things between your devices quickly and privately, not for long-term storage of secrets. See also the privacy policy.

Last updated

Try it now. It takes five seconds.

Open Twinpad on your computer, scan the QR code with your phone, and you're connected. No account, nothing to install.

Start a session