How we keep your data unreadable — including to us.
This page explains exactly what is encrypted, how, and what we can still see. If anything here is unclear or wrong, tell us.
Two passwords, two jobs.
Your login password proves who you are to the server. Your master password never leaves your browser: it becomes the key that encrypts your data. Use two different passwords — if they matched, the server would receive the secret that protects your vault.
What we can and can’t see.
A zero-knowledge service still sees some metadata. Here is the complete list.
Encrypted on your device
- Passwords
- Usernames and email addresses you save
- Website addresses
- Entry titles
- Folder names
- File names
- File contents
- Shared items (with a separate per-link key)
Visible to our servers
- Your account email and username
- How many entries, files and folders you have
- The size of each encrypted file
- Which folder each item sits in (but not its name)
- Creation and modification times
- IP addresses of requests, for rate limiting
Share links use a key we never receive.
Sharing does not reuse your vault key. Each link gets its own random key.
- GenerateYour browser creates a fresh random AES-256 key just for this link.
- EncryptA copy of the file or login is encrypted with that key. Your vault key is not involved.
- UploadOnly the encrypted copy is uploaded, together with a random link ID.
- LinkThe key goes after the
#in the URL. Browsers never send that part to a server. - ExpireLinks stop working after the time and number of opens you chose, or earlier if you revoke them.
Defence in depth around the encryption.
Session cookies
HttpOnly, Secure and SameSite=Strict. Scripts on the page cannot read the session token.
Strict Content Security Policy
Only our own scripts can run. No inline scripts, no third-party trackers, no analytics.
Login hashing
Login passwords are stored as Argon2id hashes, a memory-hard function designed to resist GPU cracking.
Rate limiting
Login, registration and token exchange are rate-limited per IP to slow down guessing.
Transport
HTTPS only, with HSTS. Pages cannot be framed, which blocks clickjacking.
Server-side checks
The API rejects names that are not encrypted envelopes, so a client bug cannot quietly upload plaintext.
Found a vulnerability?
Email us with the details and steps to reproduce. We will acknowledge within three working days, keep you updated, and credit you once it is fixed if you want. Please do not access other people’s data or degrade the service while testing.
security@example.com