Money no one can freezeCash for the internet, private by default
Privacy deep dive

Monero Stealth Addresses: How One-Time Addresses Protect You

A Monero stealth address is a one-time address made for each payment, so your public address never appears on chain. See how it works and why it matters.

By the MonkStash teamReviewed 9 min read
On this page

A Monero stealth address is a one-time address that the sender creates for a single payment to you. You share one public address, but what appears on the blockchain is a fresh address derived from it, used once and never again. The result is that your public address never shows up on the chain, and outsiders cannot link your payments together. This guide takes the mechanism apart. For the full picture of how it fits with ring signatures and hidden amounts, start with how Monero works.

Key points
  • Your public address is for the sender's wallet to read, not for the blockchain to show.
  • Each payment goes to its own one-time address, created by the sender.
  • Your private view key lets your wallet recognise the payments made to you.
  • Stealth addresses are automatic. Subaddresses are a separate, optional tool you control.

The short answer

The Monero project describes stealth addresses this way: the sender generates a new, random one-time address for each transaction sent to the recipient. The recipient can publish a single address, yet each payment lands on a different address on the blockchain that cannot be tied back to the published address or to other payments. Only the sender and the recipient can tell where a given payment went.

The problem stealth addresses solve

On Bitcoin, an address is also a public account number. If you give someone your address, they can look it up and read every payment it has ever received. Reusing an address links your payments together, and one slip, like posting it next to your name, exposes the full history.

Wallet developers on Bitcoin work around this by generating a new address for each payment, which takes care and discipline. Monero builds that discipline into the protocol. You can reuse a Monero address a thousand times, and the blockchain will show a thousand unrelated destinations. The privacy does not depend on you remembering to do anything.

How a one-time address is made

A standard Monero address holds two public keys: a public spend key and a public view key. The address documentation lays out the structure: a network byte, the two public keys, and a checksum, encoded as 95 characters. Those two keys are the ingredients for stealth addresses.

When someone pays you, their wallet does this, in plain terms:

  1. It reads your two public keys from your address.
  2. It picks a fresh random secret for this transaction. Nobody else can guess it, and it is never reused.
  3. It mixes that secret with your public view key, then combines the result with your public spend key. This produces a new one-time key that is mathematically tied to you but does not look like you.
  4. It writes that one-time key into the transaction as the output's destination, and also publishes a helper value derived from the random secret, so your wallet can later redo the calculation.
1
Sender takes your public address
It holds two public keys: spend and view.
2
Sender adds fresh randomness
A new secret, used for this payment only.
3
One-time key is calculated
Written on the chain as the payment's destination.
4
Your wallet checks each output
Your private view key spots the ones made for you.
Everything you share stays public. Everything that lands on the chain is single use.
The four steps in order. Only the first is something you shared. Everything after it is created by the sender and lives on the chain for one payment only.

If you want the exact formulas, the open textbook Zero to Monero walks through them. You do not need them to use Monero safely.

How your wallet finds your payments

If the blockchain only shows one-time addresses, how do you know which ones are yours? Your wallet checks. For every new output, it takes the helper value published in the transaction and combines it with your private view key. If the output was built from your address, the numbers line up and the wallet marks it as yours. If not, they do not, and the wallet moves on.

This is why a wallet has to scan the chain, block by block, to build your balance. Nothing on the chain says "this is yours." Your wallet has to try every output and keep the ones that pass. Starting from the right block saves a lot of work; see what the restore height is. A small hint called a view tag, added in the August 2022 network upgrade, lets wallets skip most non-matching outputs quickly and speeds up scanning.

The private view key does this job on its own, which is why a view key can power a watch-only wallet: it recognises your incoming payments but cannot spend them.

Your publicaddressshared with everyonePayer Aoutput 9f3a...fresh one-time addressPayer Boutput 41c8...fresh one-time addressPayer Coutput e07d...fresh one-time addresson thechainTo an outsider the three outputs look unrelated. Your wallet, using your view key, recognises all three.Labels are illustrative. Real one-time addresses are long random-looking keys.
One public address, many payers, many different on-chain destinations. Only your wallet can connect them.

Spending from a one-time address

Recognising the payment is not enough, you also need to spend it. The private spend key, combined with the same shared secret your wallet just found, produces the secret that controls that one-time output. Nobody can calculate it without your spend key, so seeing the one-time address on the chain gives an outsider no power over the money.

When you do spend, the output joins a ring and its fingerprint becomes a key image, as explained in Monero ring signatures. The two features work as a pair: stealth addresseshide where money arrived, rings hide where it left from.

What it means for publishing an address

You can post a Monero address on a website, a donation page, or a profile without handing out your payment history. Because of stealth addresses, someone who finds it cannot look it up on a block explorer and see what you received. There is nothing to look up: the address never appears on the chain.

The rule of thumb

A Monero address is safe to publish for receiving. The remaining risks are about who you tell, not what the chain shows.

Keep these edges in mind:

  • The payer knows. Someone who paid you can see that you received it, because they made the payment. If you give the same address to many people, each of them knows only their own payments, but they can compare notes off chain.
  • Posting next to your name links you to the address. It does not reveal your balance, but it does tell the world that this address, and anyone who pays it, is connected to you.
  • Sharing your view key shares your history. The view key can recognise incoming payments, so give it only to someone you trust.

If you want to run a shop, collect from several clients, or separate savings from spending, the better tool is a subaddress. That is the next section.

Stealth addresses vs subaddresses

These are easy to confuse, because both involve "extra addresses." They solve different problems and operate at different layers.

Stealth addressSubaddress
Who creates itThe sender, per paymentYou, from your wallet
PurposeHide where money arrived on chainTell payments and payers apart
Is it shared?No. It only exists on the chainYes. You hand it out
How manyOne per outputAs many as you want
Optional?No, always onYes

Both work together. When someone pays one of your subaddresses, their wallet still creates a one-time stealth address for that payment. Read what a Monero subaddress is to see when it is worth making extra ones.

What stealth addresses do not hide

Stealth addresses protect the receiver's identity on the chain. They are one layer of three, plus separate considerations about the network. Here is what they do not cover:

  • The sender, who is hidden by rings, not by stealth addresses.
  • The amount, which is hidden by RingCT.
  • What the node you connect to can see about your wallet's activity, such as your internet address and when you connect.
  • What an exchange knows. If you withdrew to your address from a service that checked your ID, the service knows you received that withdrawal.

What you do in practice

Nothing, which is the point. There is no "create stealth address" button, because every Monero payment already uses one. Copy your address from your wallet, share it, and let senders' wallets handle the rest. The address validator can check that an address is well formed before you send to it.

Ready to try it? Open a MonkStash wallet to see your address and receive a small test payment, or read how to receive Monero for the step-by-step version. For the full picture, the Monero project's own Moneropedia entry is a good companion.

Frequently asked questions

What is a stealth address in Monero?

A stealth address is a one-time destination created by the sender for a single payment, using the receiver's public address and fresh randomness. It is the address that appears on the blockchain, instead of the receiver's real public address.

Is a Monero stealth address the same as my public address?

No. Your public address is the long string you share. A stealth address is what the sender derives from it for each payment. Your public address itself never appears on the blockchain.

How do I get a stealth address?

You do not make one. Your wallet has a normal address, and the sender's wallet creates the stealth address automatically every time someone pays you.

How does my wallet know a payment is mine?

It scans new outputs and uses your private view key to test whether each one was built for you. Only outputs made from your address pass the test.

Is it safe to post my Monero address publicly?

Your payments do not become visible on chain, because each one goes to a different one-time address. The risk is elsewhere: the person who knows the address is yours can still see what you tell them, and posting one address everywhere links the payers to each other off chain.

Are stealth addresses the same as subaddresses?

No. Stealth addresses are an automatic protocol feature that happens on every payment. Subaddresses are extra addresses you choose to create, mainly to tell payments apart. A payment to a subaddress still lands on a one-time stealth address.

Can someone link two payments sent to the same Monero address?

Not from the blockchain alone. Two payments to the same address land on two different one-time addresses that look unrelated, unless someone has your private view key.

Next up

Keep reading

How it works

How Does Monero Work? The Privacy Explained Simply

10 min read
Privacy deep dive

Monero Ring Signatures Explained: Ring Size, Decoys and FCMP++

11 min read
Receiving privately

Monero Subaddresses: What They Are and When to Use One

9 min read
Keys, explained

Monero View Key: What It Is and Is It Safe to Share?

9 min read
Privacy

Is Monero Traceable? What the Research Actually Says

10 min read