How our encryption works
tempchat.cool encrypts every message in your browser with AES-256, using a secret key that only exists in the part of the room link after the #. Browsers never send that part to a server, so we only store scrambled text we cannot read.
The short version
- 01
Your browser makes a key
When you create a room, your browser picks a random 256-bit secret. It never leaves your device except inside the link you share.
- 02
The key rides in the link
The secret sits after the # in the link. Browsers do not send that part to servers, so it stays between you and the people you share the link with.
- 03
Everything is scrambled before it leaves
Messages, nicknames and the room name are encrypted in your browser. Our server stores and relays scrambled text, and deletes it when the room ends.
What our server can and cannot see
You can check this yourself. Press the eye button in a room to see What our server sees: the real scrambled messages as they arrived over the connection.
| Our server can see | Our server cannot see |
|---|---|
| The room address and when it was created | The key (the part after the #) |
| When the room ends and how long it was set to last | The room name |
| Whether a password is set | The password |
| How many people are connected, and when they connect | Nicknames, or who is who |
| How many messages were sent, when, and their padded size | The text of any message |
How it works, in more detail
- The room key is 256 random bits made with your browser's own secure random generator.
- From that key, your browser derives two separate values with HKDF: an AES-256-GCM key that encrypts and decrypts, and an access token. We store only a hash of the access token, so we can check who may connect but can never get back to the key.
- Each message is padded to a multiple of 256 bytes before it is encrypted, so its stored size says little about its length.
- The room address and the kind of content (message, room name) are bound into each encrypted message, so a stored message cannot be moved into another room or passed off as something else.
- If you add a password, it is stretched with PBKDF2 (600,000 rounds) and mixed into the keys. Without the password, even the full link cannot read or download anything. Wrong guesses are limited to 5 per minute per room.
- All of this uses the cryptography built into your browser (WebCrypto). There are no third-party scripts on room pages.
The honest limits
- Anyone with the link can read the whole chat, including what was said before they joined. Share it only with people you trust.
- Nicknames are not verified. Anyone can type any name.
- You are trusting the website code we serve you. Because it is a web app, we could in theory serve different code. We keep the room code small, load nothing from other companies, and want you to be able to check it.
- Browsers can keep the full link, including the key, in history or sync it between your devices. Use Delete now for sensitive rooms.
- Anyone in the room can screenshot or copy messages. No chat tool can stop that.
- There is no forward secrecy: if the link leaks while the room still exists, whoever has it can read the stored messages. Short lifetimes are the protection.
Questions people ask
Can tempchat.cool read my messages?
No. The key is in the part of the link after the #, which your browser never sends to us, so we only store scrambled text.
Is it open source?
Not yet. We want to publish the room code so people can check it; until then, the What our server sees view lets you inspect the real data.
What happens when a room ends?
The stored messages and the room are deleted from our servers, and everyone in the room is disconnected.