Loading Nullkey… If this stays visible, reload when online. Your saved keys are preserved.
Encrypt messages and files
Disposable encrypted messages. Exchange a fresh receive link, then share through any app.
This browser is too old for Nullkey. Update it, or try another browser, to send and open messages.
Ask for a fresh receive link for each message. To receive one, create a link and keep this tab unlocked.
Each recipient needs a fresh receive link for this message. Compare fingerprint emoji to verify their identity.
Receive one message
Create a receive link and send it to one person. Its private key stays only in this tab.
One message per link. Locking or reloading loses unread messages. A backup cannot recover them.
Recent
Conversation
Help & details
How to use Nullkey
-
Exchange a receive link
In Decrypt, create a receive link and share it with one sender. Keep that tab unlocked. Compare safety emoji once to verify your identities.
-
Write, then encrypt & copy
Press Ctrl ↵Tap Encrypt & copy, then paste the copied link into any chat, email or post. You can also copy ciphertext or save a
.cipherfile. -
Decrypt once
Paste their ciphertext into the original receiving tab. Its one-time key is erased after decryption. Create a fresh link for the next message.
Files work the same way. Drop one on the page to get an encrypted .cipher file you can attach in
your chat app; its real name and type are hidden inside.
If you prefer the share menu, install Nullkey from Chrome's menu on Android. Then, in apps that offer sharing, choose
Share → Nullkey to open an encrypted message or .cipher attachment. Availability depends on your
browser and device; on iPhone, use message links or paste instead.
About your public key
- Made for you
- Your browser creates it the first time you visit. There's nothing to sign up for.
- Safe to share
- Your public identity verifies signatures and stays the same across receive links. Each new message needs a fresh receive link with its own private key, held only in the receiving tab.
- Saved in this browser
- Clearing your browsing data deletes it. To keep a backup, or to use it on another device, copy a identity backup from My keys. Backups never include one-time receiving keys or recover disposable messages.
Security details
- Encryption
- AES-256-GCM, with a fresh key for every message (HKDF-SHA-256, random 128-bit salt).
- Quantum resistance
- New message keys combine ephemeral X25519 with one-time ML-KEM-768, designed to resist known quantum attacks. This depends on the algorithms remaining secure; it is not a guarantee against every future breakthrough.
- Sender
- New messages use ML-DSA-65 sender signatures. Verify the full Nullkey ID and safety emoji to authenticate its owner.
- Key erasure
- Disposable receiving keys are erased after a successful open, or on lock/reload. Later identity-key theft cannot reconstruct them. Browser memory erasure is best effort.
- Safety emoji
- 10 emoji from a set of 256: 80 bits of SHA-256 over your whole ID, too many to fake.
- Integrity
- Any change, reorder or cut to a message or file makes it fail to open.
- Network
- None. The page's security policy blocks every outgoing connection, and it works offline.
- Code
- The browser's WebCrypto, plus pinned local noble ML-KEM-768, ML-DSA-65 and Argon2id implementations.
What it can't hide
- Your chat app still sees that you sent something, when, to whom, and roughly how long it was.
- New messages use independent one-time receiving keys, erased after decryption or locking. Identity backups cannot recover them. Older v2/v3 messages retain their original security properties.
- A platform can keep ciphertext forever. Key erasure protects against later identity-key theft; it cannot guarantee safety if the underlying cryptography is eventually broken.
- You trust this page each time it loads. If your device itself is compromised, no encryption can help.