Encrypt messages and files
Encrypt with their public key. Decrypt with your private keys. Share through any app.
This browser is too old for Nullkey. Update it, or try another browser, to send and open messages.
Add a recipient's public key to send them encrypted messages. Share yours so they can reply.
Select who can decrypt this message. Click their fingerprint emoji to verify their key.
Recent
Conversation
Help & details
How to use Nullkey
-
Exchange public keys
Share your public key link and open theirs to add them. Then check your safety emoji together once.
-
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 with your private keys
Open their link in the browser that stores your private keys, or paste the ciphertext into the Decrypt tab.
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
- It works like a mailing address: anyone with it can send you private messages, but nobody can use it to read them. Your private keys stay in this browser unless you export a backup.
- Saved in this browser
- Clearing your browsing data deletes it. To keep a backup, or to use it on another device, copy a private key backup from My keys.
Security details
- Encryption
- AES-256-GCM, with a fresh key for every message (HKDF-SHA-256, random 128-bit salt).
- Quantum-safe
- Every message key combines X25519 with ML-KEM-768, the NIST post-quantum standard. Reading a message would mean breaking both, so messages recorded today stay private even from future quantum computers.
- Sender
- New messages use ML-DSA-65 sender signatures. Verify the full Nullkey ID and safety emoji to authenticate its owner.
- 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.
- Protected keys are saved encrypted; their passphrase is required to reconstruct them. Session-only keys are lost when the tab closes unless you export a backup. This does not add forward secrecy.
- You trust this page each time it loads. If your device itself is compromised, no encryption can help.