Every line here has a source. Including the ones we lose.
Avano against Signal, WhatsApp and Telegram. Each cell names the document or source file it was read from, retrieved on 29 July 2026. Where we could not verify an answer the cell says so instead of guessing, and where a rival is ahead the row stays in.
Three of these four need to know your phone number. One does not.
A phone number is an identifier that already sits in a carrier's records, a subscriber file, and every contact upload anybody ever made — so a service that holds one has, by definition, a record that can be named in a court order. Avano has no registration step at all.
| Avano | Signal | Telegram | ||
|---|---|---|---|---|
| A phone number is required to sign up | No | Yes | Yes | Yes |
| An account record exists on the operator's servers | No | Yes | Yes | Yes |
Avano — there is no registration step in the app and no accounts table in our infrastructure: not an empty one, none. Your identity is a key pair derived on the device from a recovery phrase and never transmitted. This is a claim about code you cannot read yet — see 07.
Signal — signal.org/legal: “To create an account you must register for our Services using your phone number.” After usernames shipped, signal.org/blog/phone-number-privacy-usernames (20 Feb 2024): “you will still need a phone number to sign up for Signal.”
WhatsApp — whatsapp.com/legal/privacy-policy: “You must provide your mobile phone number and basic information (including a profile name of your choice) to create a WhatsApp account.”
Telegram — telegram.org/faq: “the phone number is the only way for us to identify a Telegram user at the moment.”
We tie Signal here, and we should — it is their library, unmodified.
Message encryption is a solved problem and we did not try to re-solve it. Avano runs unmodified libsignal, so on these three rows we match Signal exactly. The rows are here because most messengers match neither of us, and because a comparison that showed only our wins would not be worth reading.
| Avano | Signal | Telegram | ||
|---|---|---|---|---|
| End-to-end encryption is the only mode, not an option you switch on | Yes | Yes | Yes | No — “Secret Chats” only |
| Post-quantum protection at the key exchange | Yes | Yes | Not verified | Not verified |
| Post-quantum protection on the ongoing ratchet, not just the handshake | Yes | Yes | Not verified | Not verified |
Avano — sessions open with PQXDH (X25519 with an ML-KEM-1024 prekey) and every ongoing message carries a Sparse Post-Quantum Ratchet component; our own test drives fifteen alternating ratchet steps and asserts that none of the components is empty and no two are equal, which is what separates a continuous ratchet from one that fixed its post-quantum material at setup.
Signal — signal.org/blog/pqxdh (19 Sep 2023) announces PQXDH; signal.org/blog/spqr (2 Oct 2025) announces the Sparse Post Quantum Ratchet: “We mix the output of this new ratcheting protocol with Signal's existing Double Ratchet, in a combination we refer to as the Triple Ratchet.” It names ML-KEM-768. signal.org, on encryption being unconditional: “Privacy isn't an optional mode — it's just the way that Signal works. Every message, every call, every time.”
WhatsApp — whatsapp.com/legal/privacy-policy: “We offer end-to-end encryption for our Services.” We found no official WhatsApp specification for post-quantum protection on either row and therefore scored them Not verified, not No. WhatsApp uses the Signal Protocol, so it may well have both; we simply did not find a first-party statement and will not score a competitor from hearsay.
Telegram — telegram.org/faq: “We support two layers of secure encryption. Server-client encryption is used in Cloud Chats (private and group chats), Secret Chats use an additional layer of client-client encryption.” Ordinary Telegram chats are therefore readable by Telegram's servers. We found no post-quantum specification and scored those rows Not verified for the same reason as WhatsApp.
Signal's call setup does not force a relay for a contact you have accepted.
This is a difference in design, so it is stated as one. Here are the two lines that decide it, read from Signal's own Android source on the main branch.
Signal-Android · OutgoingCallActionProcessor.java, lines 148–149
boolean hideIp = !activePeer.getRecipient().isProfileSharing() || callSetupState.isAlwaysTurnServers();
The same expression appears in IncomingCallActionProcessor.java. So a call is set up with IP hiding only when the recipient is not profile-sharing, or when the always-relay preference is on.
Signal-Android · TextSecurePreferences.java, line 101 and lines 656–658
public static final String ALWAYS_RELAY_CALLS_PREF = "pref_turn_only";
public static boolean isTurnOnly(Context context) { return getBooleanPreference(context, ALWAYS_RELAY_CALLS_PREF, false); }
The default passed to getBooleanPreference is false. The preference is off unless the user finds it and turns it on.
What that means, without adjectives
Profile sharing is enabled for the contacts you accept. For such a contact, hideIp is false unless the always-relay preference has been switched on, and the call is then set up without forcing a relay. Where a direct path is established between the two devices, each side observes the other's network address. That is the design; it is a reasonable engineering trade for call quality, and Signal ships the setting that changes it.
Avano now has one-to-one voice calls, and their media is forced through a relay so that neither party ever learns the other's address. The honest cost: that relay is reached outside Tor — call media is UDP and cannot ride the onion network — so it sees both callers' IP addresses and the call's timing, though never its content, which is end-to-end encrypted. Video is not built, and nobody has yet verified call audio end to end on real handsets. The table below is about the design difference in how a call exposes an address; the rest of the page is about every byte the app sends as a message, which is a separate, Tor-only path.
| Avano | Signal | |
|---|---|---|
| Messaging traffic is carried over an anonymity network by default | Yes — Tor, and the relay is published only as an onion service | Not by default |
| A contact can learn your IP address during a call | No — call media is relayed, so a contact never learns your address (the call relay does) | Yes, for an accepted contact, unless the preference is on |
Avano — the shipping path opens the account with openLockedViaTor against a .onion address; the plain-TCP path is reachable only under a debug environment variable and is unreachable in a shipped build. A bare socket cannot resolve a .onion name at all, which is why a successful connection is itself evidence the circuit carried the traffic. Claim about our own code — see 07.
Signal — the two source files quoted above, plus the absence of any onion or anonymity-network transport in the same client. Signal is not designed to hide your address from Signal, and does not claim to be.
No push service learns when you are messaged, because Avano uses none.
Every app that wakes your phone for an incoming message tells a push service that something arrived for your device, and when. The contents are sealed; the timing is not.
No push service carries your messages
Searching the app sources for registerForRemoteNotifications, FirebaseMessaging, com.google.gms and UnifiedPush returns zero hits in the message path. Avano does notify you: it posts a local notification — one that needs no server and no token — when mail arrives over your own relay, on your own circuit, and the notification's entire text is the app's own name: no sender, no preview, no count, no badge. (A VoIP-push path for call ringing exists in the iOS source but is gated off, and registers nothing until it is enabled.) What differs by platform is the limit: Android will not post while the device is locked, and iOS cannot post once iOS has terminated the app. The full argument →
Firebase Cloud Messaging, in the build file
app/build.gradle.kts in signalapp/Signal-Android, main dependencies block: implementation(libs.firebase.messaging). It is not behind a distribution flavour — the four flavours (play, website, github, nightly) all inherit it. Stated without editorial: this is the ordinary way an Android messenger delivers a notification, and Signal designed around it carefully. Push-backed delivery — an alert that reaches you with the app terminated and the phone locked — is a real capability Avano does not have, and the reason Avano does not have it is that we would rather not create the record. We did not audit WhatsApp's or Telegram's clients and are not scoring them on this page. Not scoring is what we do when we have not checked.
Four things Avano does that we found no competitor doing.
These are the reason to choose Avano and they are also, today, the ones you have most reason to be sceptical of, because the repository is not public yet. Both halves of that sentence are on purpose.
Tor for every message, by default — not a setting
There is no switch, no “enable Tor” screen and no clearnet fallback for messaging in a shipped build. The relay is published only as an onion service, so a client that is not on a circuit cannot even resolve the address. The one exception is a voice call: its media is UDP and cannot ride Tor, so it travels over a relay outside the onion network — every byte the app sends as a message goes over Tor. The transport is named in the assertion rather than inferred from a build flag, because “Tor is in the build” and “the messages go over Tor” were once two different truths in this codebase and only one of them was ours.
Cover traffic on by default, free for everyone
Your phone emits at a constant rate whether you are writing or reading in silence, so a network observer cannot read your volume off the wire. It was going to be a paid feature and that decision was reversed, on the argument that a privacy lane you pay for marks the people who paid for it — a relay reads a subscriber's constant rate straight off the queue, and the people who buy anonymity are on average the people with most to hide. It costs a measured 748 MiB per device per month, which is why the switch still exists. It hides volume, not presence: a phone that is offline emits nothing, and no amount of cover makes a stopped stream look like a running one.
Relays that hold nothing on a disk
Queues live in memory. Where durability across a process restart is configured at all it points at a RAM-backed filesystem, and the relay refuses to start if that directory turns out to be on a real disk — the override is a literal string an operator has to type out in full, i-accept-a-seizable-spool. A warrant for the disk and a subpoena for backups both return nothing. A copy of the machine's memory is a different question and we answer it separately on what a relay yields.
One relay today; the two-relay split is built, not switched on
Relay one is in Germany. A second relay ran in Iceland, on a different company and network, and was deliberately allowed to lapse in early August 2026 — the app never dialled it, because it pins a single relay. So there is one message relay today, and the routing that would split the two sides of a conversation across two relays is written and not switched on. Both Android and iOS tell you, per conversation, whether the split is actually in force rather than letting you assume it. A diverse-jurisdiction second relay, sited outside Europe, is planned but not deployed.
Where a rival is ahead.
Not as an apology and not repeated on every page. A serious buyer looks for this list, so here it is in one place.
| Avano | Signal | |
|---|---|---|
| Independent third-party security audit | None yet | Yes |
| Source code published | Not yet — repository private | Yes |
| Available in the app stores | Not yet | Yes |
| Voice and video calls | Voice — built, relayed (audio unverified on real handsets); video — not built | Yes |
| Alerts once the app is closed or the phone is locked | No — Avano alerts you instantly while it is running, but not after iOS terminates it, and not while Android is locked. The push refusal that causes this | Yes |
| Backup and restore | Message-history backup refused; identity restore from your recovery phrase, yes | Yes |
| Number of people to hide among | Very small | Very large |
The bottom four rows are choices and the top three are work. They are not the same kind of gap and we do not want them read as one — which is why this site keeps refusals and limits on separate pages. The last row is the one no engineering closes: anonymity is a property of a crowd, and ours is small.
Avano's interface is rendered by the system web view rather than written in native code. A web view is a wider attack surface than a native UI, and against an adversary who already runs code on the device — commercial spyware of the Pegasus and Predator families — that is a real cost of how the app is built today. Under that adversary every messenger reads the plaintext after decryption anyway, so it changes the price rather than the outcome, but it does change the price. The limits page states it in context →
How this was scored.
Primary sources only, retrieved on 29 July 2026. Every competitor cell above comes from that company's own policy, own FAQ, own engineering blog or own source repository, linked in the note under each table. No cell was written from memory or from a third-party summary, and the two Signal source files were read on the main branch rather than quoted from a secondary write-up.
“Not verified” means not verified. Several cells say it. Each one is a case where we could not retrieve a first-party statement, and the honest score is not No — a rival may well have the property and simply not have published it. An earlier version of our own comparison table scored “post-quantum encryption — WhatsApp: No”, which we could not support when we went looking for the source, so it has been corrected rather than quietly dropped.
Claims about Avano are claims about code you cannot read yet. The repository is private today. Where a row above is about our own behaviour, the only thing standing behind it is our word plus the fact that we publish the limits alongside it. That is weaker than a link and we are not going to dress it up. Which of our claims you can already check yourself →
Rows a rival wins stay in. Section 06 exists because a comparison that omitted it would be worth nothing, including to us — the first journalist or reviewer who checks would find the gap in ten minutes and would then be right to doubt the rest of the page.
If a cell here is wrong, that is a correction we want and it goes to the same address as a security report. How to send one →
The architecture behind the top half of these tables.
How an identity exists without an account, what the relay actually holds, and what a seized phone yields.