A phone number and a room code solve the same problem: two people need a way to find each other before they can talk. They solve it in opposite directions. A phone number is a permanent identity that points to you. A room code is a key to a single conversation, and when that conversation ends, the key is dead. Sotvo, our messaging app for two people who already know each other, is built on the second model. This page explains what each one gives away.
What does a phone number identify?
A phone number identifies a person, permanently. It is registered to your name through a carrier, tied to the SIM in your pocket, and formatted so any phone on earth can reach it. Those are useful properties for a phone. They are heavy properties for a private conversation.
Messaging apps that use your number as a login inherit that weight. Anyone who ever saved your number can find your account there. Reverse-lookup sites index numbers against names. Data breaches spill them in bulk, and carriers eventually recycle old numbers to new owners. Delete the app and the number still points to you. Change the number and you lose every conversation tied to it.
A phone number outlives every conversation it starts.
What is a room code?
A room code is a six-character, single-use key that opens one private room. In Sotvo, one person opens a room and the app generates the code, drawn from nearly a billion possible combinations. You pass it to the one person you want in the room, someone you already know: out loud, on paper, however you like. The moment they enter it, the room seals and the code stops working. For anyone. Forever.
An unclaimed code is short-lived too. It expires with the room it points to: one hour after opening, by default. On the current pre-release build (July 2026), opening a room takes one tap, and the code sits alone in the middle of an empty screen until you pass it on.
The code points to a room, not to a person. There is no directory where a code can be looked up. No profile behind it. Nothing left to search once the room is gone.
Room code vs phone number vs account ID
Some private messengers replace the phone number with a generated account ID, so the honest comparison has three columns.
| Phone number | Account ID | Room code | |
|---|---|---|---|
| Points to | You, by name | You, by pseudonym | One conversation |
| Lifetime | Decades; survives every app | Permanent; restored from a recovery phrase | One use; expires in hours |
| Who can reach you with it | Anyone who has it | Anyone who has it | The one person you gave it to, once |
| If it leaks | Still linked to you; changing numbers is costly | Still a live address until you abandon it | Worthless after first use or expiry |
| What you hand over | Your number, usually your name | Nothing at sign-up; the ID persists | Nothing; nothing persists |
What about a permanent account ID?
An account ID removes the phone number and keeps a permanent identity. Session is the clearest example: it replaces your number with a generated Account ID that you can restore on any device from a recovery phrase. Your contacts keep one stable address for you, and nothing about that address ties back to your SIM. Choose that model if you want a lasting, number-free contact point that people can still reach next month.
A room code removes the identity itself. There is no stable address, nothing to restore, and no history gathering around a name. Each room starts from zero and ends at zero. No address survives between rooms that could tie the next conversation to the last one.
Why doesn’t the server see the room code?
The server never sees the room code because the code itself becomes the key material. Both phones feed the code into a password-authenticated key exchange called CPace, and the room’s encryption keys are derived from it on the devices. The server receives an opaque routing tag, produced from the code on your phone by a one-way derivation, plus ciphertext it cannot open. A server that does not know the code cannot compute the keys, and a recorded handshake does not reveal the code afterwards.
We see that a room exists, never what’s inside.
The same handshake adds a post-quantum hybrid key exchange on top, and every message afterwards gets its own key. The full chain, from six characters to per-message keys, is laid out in the cryptography behind the code.
The code model is one answer to a bigger question people arrive here with: how do you talk to someone without handing over a number at all? We keep a separate comparison of messaging apps that skip the phone number, including the ones built on permanent IDs.
Questions about room codes
Can someone guess a room code?
Guessing is impractical. A code is drawn from nearly a billion combinations, lives for a short window, and works exactly once. Wrong attempts are rate-limited by the server, and the moment the person you invited joins, the code is dead even for someone who finds it written down.
Is a room code free to use?
Joining rooms is always free. Entering a code never costs anything. Opening rooms that live longer than an hour will be part of a one-time unlock when Sotvo reaches the App Store.
What happens if I lose the code?
Nothing is lost, because the code carries nothing. Open a new room and share the fresh code. There is no account behind a code to recover, and that absence is the point of the model.
Can I reuse a code for the next conversation?
No. A room code dies when its room is claimed or expires, and the next room gets a new code and new keys. That separation keeps one conversation’s encryption from ever touching another’s.