Pass Share
Share passwords and secrets over an encrypted link. Everything is encrypted in your browser before it reaches our server - we can't read what you send.
How it works
- 1
Type your secret
It is encrypted right in your browser before anything is sent anywhere; not even I can read it.
- 2
Get a link
Every secret gets a unique URL that carries its own decryption key.
- 3
Share it safely
Anyone who opens the link sees the secret. Add a PIN, an expiry date, or a one-time limit to control access and lifetime.
Why you can trust this
- Zero-knowledge: your secret is encrypted on your device, and our server only ever stores an unreadable blob.
- The decryption key never touches our servers; it lives in the part of the link browsers don't send anywhere, and it is wiped from the address bar after viewing.
- Self-destructing: optionally set an expiry date or a visit limit. When hit, the data is permanently deleted.
- An optional PIN adds a second gate on top of the link, protected against brute-force guessing.
- No account needed to create or view secrets.
Technical details
- Encryption: AES-256-GCM via the Web Crypto API. A fresh 256-bit key and 96-bit IV are generated per secret in your browser.
- Server storage: base64url(iv.ciphertext), an optional PIN hash (scrypt, N=16384 r=8 p=1 with a random 16-byte salt), and creation metadata (timestamp, creator, IP). Plaintext and the decryption key are never stored.
- Key distribution: the key is exported as raw bytes → base64url and appended to the URL as a fragment (#…). Fragments are never sent to the server, no access logs or analytics see them, and the client removes the fragment from the address bar right after successful decryption.
- Self-destruction: visits are counted with an atomic, guarded database update, so concurrent opens cannot exceed the limit. On the last allowed visit the row is burned. A timestamp is recorded and the ciphertext is deleted.
- Abuse protection: guest usage is limited to 512 characters per secret and 5 secrets per minute per IP; logged-in users have no limits. PIN attempts are rate-limited to 10 per 5 minutes per secret and IP, and all failure responses are deliberately identical so secret existence cannot be probed.
- Transport: served over HTTPS with a strict Content-Security-Policy and security headers.