Only you and the people you write to can read it
Cryptico is an anonymous messenger for web, Android and iPhone: no phone number, no email, no real name. Every message is end-to-end encrypted, and the server code cannot decode one even if we wanted it to.
No sign-up, no phone number — it opens straight in the browser.


An account is a phrase, not a person
You sign up with nothing. Cryptico generates a random identity and a twelve-word recovery phrase, and that phrase is the account — every key you have is derived from it. There is no number to verify, no address to confirm, no profile that ties any of it back to you. A username is optional: take one if you want to be findable, skip it if you do not.
Four things we can actually stand behind
- 01
The server cannot read your messages
This is a property of the build, not a policy. The server binary does not compile the definition of a message body, so it contains no code path that could decode one. A check in our pipeline fails the build if that ever stops being true.
check-proto-content-boundary.mjs - 02
No real-world identifiers, ever
No phone numbers, no email addresses, no real names — not in the app, not in the database, not in the protocol. An automated check rejects any change that adds one. A phone-number field once made it into a draft of the contact card; it was removed and its slot permanently retired.
check-forbidden-columns.mjs - 03
Signal Protocol, with post-quantum key agreement
PQXDH for the handshake, the Double Ratchet for messages, Sender Keys for groups. Every session adds a post-quantum Kyber-1024 exchange on top of the classic one — not as an option, in every handshake — so traffic recorded today does not become readable by a future quantum computer. What follows the handshake is conventional cryptography, which is why we say post-quantum key agreement rather than claiming it end to end.
libsignal · PQXDH · Kyber-1024 - 04
Calls our own servers cannot listen to
One-to-one calls go straight between devices; no server touches the media at all. Group calls pass through our media server, and every frame is encrypted before it gets there, with a key that server never receives. A build check keeps call media keys out of the server code entirely.
check-call-media-key-boundary.mjs
What you can actually do with it
A messenger, not a demonstration. Everything on this list is in the product, on every platform it makes sense on.
Chats that behave like chats
Text with mentions, replies, edits, delete for everyone, reactions, forwarding, multi-select and personal bookmarks. Delivery and read receipts, typing indicators, drafts, search inside one chat and across all of them. Polls, checklists, a map point and a contact card when plain text is not enough.
Groups of up to 128
Create a group, add and remove people, invite by a link with an expiry and a use limit, mention one person or everyone. The server fans the messages out and never learns the group's name, description or who you called it after.
Files, photos and voice
Eight kinds of attachment up to 100 MiB each — photo, video, voice message, video note, file, GIF, sticker, audio — with albums and spoilers. Every file is locked on your device with its own single-use key and checked for tampering before it is opened.
Mini-apps inside the messenger
A catalogue, one-tap install and a sandboxed runtime, plus a developer console and an anonymous report button. An app whose checksum does not match its manifest does not start at all.
Blocking that actually blocks
A blocked sender's message never reaches you in a private chat, and they never find out it did not. A block runs for 180 days, and every attempt to write extends it.
Up to ten devices on one account
Link a new device with the phrase, see the whole list, unlink any of them — and unlink one even when you have no working session left. Contacts, folders, chat list, blocks and settings travel across encrypted. Your message archive largely does not; that one is under “what we do not promise”.
Calls, one to one and in a group
Audio and video, front and back camera, up to eight video tiles at once, raise your hand, share your screen, mic and camera indicators on every tile. Media takes a relay by default, so the other side never sees your address.



Folders, pins and quiet chats
Rule-based folders, pinned chats, muted chats, a shared-media view and a connection banner that tells you the truth about your link. A mention still gets through a muted chat — that one is deliberate.



How it actually works
The short version, for people who want to check rather than trust.



- Handshake
- PQXDH: Curve25519 plus a Kyber-1024 pre-key, in every single session, so the key agreement is quantum-resistant from the first message.
- Messages
- The Double Ratchet: every message moves the keys forward, so a key recovered later does not open what came before.
- Groups
- Sender Keys, up to 128 members. The server knows the membership list because it has to fan messages out; it does not know the group's name.
- Group calls
- Frames are encrypted before they reach our media server. The key is generated by the device that starts the call, handed out by the messenger itself, and rotated whenever anyone joins or leaves.
- Files and photos
- AES-256-GCM with a fresh key per file, carried inside the encrypted envelope, and a SHA-256 check before anything is decrypted. Storage holds bytes it cannot interpret.
- On your device
- The local message database is encrypted at rest — SQLCipher on Android and iPhone, AES-256-GCM in the browser.
- Your recovery phrase
- Twelve words. Every account key is derived from them: BIP39, then Argon2id at 64 MiB and three passes for each guess, which is what makes brute force uneconomic. The server keeps nothing that could reverse it.
- Verifying the person
- A 60-digit safety number per conversation, and a six-digit code shown inside a call for one of you to read out. The call code is computed from that connection alone, so it is different every time.
- App lock
- A four-digit PIN wrapped in Argon2id and AES-256-GCM, five attempts, biometrics where the device offers them, and an idle auto-lock. The PIN opens the device; the phrase owns the account.
- Settings and contacts
- Synced as ciphertext under a key derived from your recovery phrase — even the name of each record is a keyed hash rather than text. The server stores opaque blobs, not fields.
- Libraries
- Android and iPhone use Signal's official library. Signal publishes no build of it for browsers at all, so we compile the web engine ourselves from Signal's own sources, pinned to an exact version — one line changed to make it build here, and nothing touched in the cryptography.
What we do not promise
Every messenger's front page tells you what it protects. This one also tells you what it does not, because the parts we cannot fix are the parts you most need to know about.

We can see who talks to whom
End-to-end encryption hides what you say, not the fact that you said it. To deliver a message the server has to know who receives it and when. It also stores group membership, because fan-out is impossible without it. We cannot honestly claim we do not know who talks to whom. What we can claim is that we never see the content, and that the server code cannot even parse it.
Push notifications leak timing to Google and Apple
Android notifications go through Firebase Cloud Messaging and iPhone ones through Apple's service. The push carries no text and no sender — but the carrier sees which device was woken and at what time, and that is enough to reconstruct who talks to whom by correlating timings. Account anonymity does not extend to the fact and timing of communication while someone else's service is the wake transport.
Your history barely follows you
Signing in on a new device restores your identity, profile, contacts, folders, chat list, blocks and part of your settings — but not your message archive. The people you talk to resend a shallow slice of it, no deeper than thirty days, and that is all there is. There is no server-side backup of your history, by design.
Lose the phrase and nobody can help you
Support cannot let you back in, because there is nothing on our side to let you back in with — no number, no address, no password hint. Twelve words are the whole account. That is the price of the rest of this page, and we would rather you knew it before you sign up than after.
We keep logs, just not of you
We keep operational service logs, with no message content, no ciphertext bodies, no keys and no recovery phrases. "No logs at all" would be false; "no content in the logs" is true, and that is the promise we make.
Where it runs




Web
Opens in any browser, nothing to install. All 24 interface languages live here.
Open the web appopens in a new tabiPhone
A native app: chats, groups, calls, voice messages and mini-apps.
Install on iPhoneopens in a new tabAndroid
A native app, with the same chats, groups and calls on your phone.
Install on Androidopens in a new tab
Questions people actually ask

What does it cost?
Nothing. There is no paid tier, no ads and no upsell — the only limits are technical, like 100 MiB per file and thirty days of storage for one. If a paid tier ever appears we will say so before it does, not after.
Is the code public?
Not yet. It will be published once development settles. Until that day we do not describe ourselves as open source — you cannot verify the claim, and we are not going to ask you to take it on faith. When the repository goes public, its address will be right here.
What happens if I lose my recovery phrase?
The account is gone. There is no reset link and no way for support to let you back in — a recovery route we controlled would be a way in for someone else too.
Who can message me?
Someone needs your username, an invite link you handed out, or your QR code. If you would rather not be findable at all, do not take a username. You can block anyone, and a blocked sender stops reaching you.
Can I check that I am talking to the right person?
Yes, in two ways. Every conversation has a 60-digit safety number that both sides can compare once, and during a call both screens show the same six-digit code — one of you reads it out, the other checks. The call code is new for every call.
Can I use it on more than one device?
Yes, up to ten. Each one is linked with the recovery phrase, and any of them can be unlinked from the list. Contacts, folders, chat list and settings come across encrypted; your message archive largely does not.
Do you profile me or sell anything?
There are no ads and no data sales. This page carries no analytics and no third-party scripts at all — not a single request leaves for anyone else's server.
Tell me when it is ready
One message, on the day there is something worth installing. No newsletter, no drip campaign, and no third-party mailing service — the address stays in our own database and goes nowhere else.
We do not send a confirmation, so a typo means silence. Check the address before you submit it.
