Staying anonymous
Monero hides the blockchain. Everything else is up to you
Privacy usually breaks not because of cryptography but because of behaviour: a KYC exchange knows where you withdrew; a stranger's node sees your IP; one address for everything; instantly forwarding what you received; public posts. Below is a checklist from simple to advanced.
Threat model: who are you hiding from
First decide who the adversary is — it determines how much effort is needed:
| Adversary | What they see | What matters |
|---|---|---|
| A random observer, a counterparty | What you showed them | Subaddresses, don't reveal your balance |
| An exchange / service | Your deposits and withdrawals, identity (KYC), IP | Don't withdraw straight "to where you're public"; pause and send to yourself in between |
| A chain-analysis company | The whole blockchain + exchange data + their own nodes | Everything on this list; FCMP++ will make their job much harder |
| ISP / state at network level | IP, timing, traffic volume | Your own node, Tor/I2P |
Basics (always do these)
- A new subaddress for every payer. Never publish one address for both donations and salary.
- Your own wallet, not an exchange account. Withdraw coins to your wallet right after buying.
- Don't publish txids, amounts, wallet screenshots, your view key or payment proofs — on social media, chats or support tickets.
- Verify downloaded wallets by signature; never enter your seed on websites.
- Keep your wallet updated: decoy-selection bugs were fixed precisely by updates.
Network: who sees your IP
- Your own node is best: nobody knows which blocks interest you or when you send. See your own node.
- A stranger's node sees your IP, when you send transactions and (with some requests) roughly when the wallet was created. It doesn't see your keys.
- Tor / I2P: Feather, Cake, Monerujo and ANONERO can route via Tor.
monerodcan send its own transactions via Tor/I2P (--tx-proxy). - Dandelion++ is built into the protocol: a transaction first travels a random chain of nodes and only then is broadcast to all. That protects against observer nodes, but not against your "remote node" — it receives the transaction directly from you.
On-chain behaviour (while RingCT is in force)
Until the switch to FCMP++ the real input hides among 15 decoys, and behaviour affects privacy:
- Don't forward immediately. Receive and send on a minute later: the real input's age (10 blocks) stands out strongly. Let coins "sit" for a while.
- Don't merge coins from different sources unnecessarily: a salary input + an exchange input in one transaction links those sources. Use separate accounts and coin control (Feather).
- The EAE situation: withdraw from exchange A → send to exchange A (or an affiliated service). If it matters, make a few transfers to your own new subaddresses with pauses on different days (churning). Not a guarantee, but it noticeably increases uncertainty.
- Non-standard behaviour stands out: exotic wallets, odd fees, huge numbers of outputs. Use common wallets with default settings.
Buying and selling
- Coins from a KYC exchange are "tagged" with your name in the exchange's database. The exchange will see which subaddress you withdrew to, but can't follow further on the blockchain — unless you send them back to it (see EAE).
- P2P platforms (Haveno/RetoSwap, Bisq) and atomic swaps (eigenwallet) need no KYC. See where to buy.
- No-account instant exchangers are convenient but see both sides of the swap and your IP; some hold "suspicious" swaps and demand KYC after the fact.
Block explorers
Typing your txid or address into a public block explorer tells its operator your IP and interest in a specific transaction. Better:
- look at transactions in your own wallet;
- if you need an explorer — open it via Tor, or run your own (onion-monero-blockchain-explorer on top of your node);
- never enter your view key into an explorer unless you're willing to reveal all incoming payments to that service.
A list of explorers is in resources.
Advanced
- A dedicated OS for the wallet: Tails or Whonix (Feather supports both).
- Cold signing: the spend key on an offline machine or hardware wallet.
- Separate wallet accounts for different "identities", never mixing their outputs.
- Don't tell people you hold Monero. The best opsec is having nothing to defend.
Most of the "on-chain behaviour" items (input age, EAE, flooding) will lose their significance. The items about the network, exchanges, subaddresses and public posts will always apply.