Initializing encryption...
Encrypted. Peer-to-peer. Gone when you're done.
Share the invite code below with your peer, then paste their response.
Paste the invite code from your peer.
All messages have been destroyed.
No trace of this conversation remains on your device.
When you chat on Ephemeral, messages are stored only in your browser's RAM — never written to disk, never sent to a server, never stored in the cloud. When the session ends, the JavaScript array holding your messages is cleared. They are simply gone.
Your messages travel directly between browsers via a WebRTC data channel. No relay server ever sees your data. The only server involvement is a public STUN server used during connection setup to discover your network address — it never sees message content.
Every message is encrypted with XSalsa20-Poly1305 (via libsodium's crypto_secretbox). The encryption key is derived by combining two X25519 Diffie-Hellman exchanges:
The two shared secrets are combined via BLAKE2b to produce the session key. Fresh random nonces are generated for every single message.
Each session generates a fresh ephemeral key pair that is never stored. Even if your long-term identity key is compromised in the future, past session keys cannot be recovered.
Both users' identity fingerprints are displayed at the top of the chat. You should verify these out-of-band (e.g., read them aloud on a phone call) to confirm you're talking to who you think you are.
The only thing Ephemeral persists to disk is your long-term identity key pair, stored in IndexedDB. This lets you keep the same identity across sessions. No messages, contacts, or session data are ever written to any persistent storage.