A Monero user manages payments from multiple sources: employer deposits, freelance clients, peer-to-peer transfers, and occasional exchanges. Publishing a single address for all these contexts creates a transaction history that Monero’s protocol hides from third parties but not from the user’s own records. The question becomes practical: should each payment context receive its own address, and if so, which address type should generate it? The answer depends on whether the goal is wallet organization or transaction privacy—and these are not the same problem.
Subaddresses and stealth addresses both generate unique receiving destinations within a single Monero wallet. Both are derived from the same set of private keys. Yet they serve different purposes and work through different mechanisms. Confusing them can lead a user to believe they have achieved separation when they have only created administrative convenience, or conversely to overcomplicate operations when simpler methods would suffice. Understanding the distinction is essential for using a privacy wallet correctly.
How subaddresses work and their role in wallet organization
A subaddress is a receiving address derived from the primary account using a sequential index. When a user creates a subaddress, the wallet generates a unique public key pair attached to that index while keeping the private view key and spend key in the same wallet. From the sender’s perspective, each subaddress appears as a completely distinct destination. The sender does not see that multiple subaddresses belong to the same wallet. The transaction history for funds received on different subaddresses appears segregated to outside observers.
The operational purpose of subaddresses is organizational. A user can assign a subaddress to a specific merchant, employer, or service without needing to generate a second wallet or manage separate recovery phrases. The primary account remains secure; all subaddresses are derived from it and controlled by the same private keys. When funds are later spent from the wallet, all subaddresses contribute to the same account balance. This differs from a separate wallet, which would require independent key management.
From a privacy perspective, subaddresses reduce the most obvious form of address reuse. If a user publishes one primary address to multiple counterparties and receives payments to it repeatedly, an outside observer could link all those payments by address. With subaddresses, each counterparty can use a different address, reducing the direct correlation. However, a sophisticated chain analyst could still potentially link subaddresses to the same wallet through spending patterns, timing, or other behavioral signals—especially if the same wallet later consolidates funds from multiple subaddresses in a single transaction.
The key distinction is that subaddresses provide privacy primarily against casual observation and against counterparties learning about each other. They do not prevent the wallet owner from knowing which subaddress received which payment, and they do not hide the fact that funds from multiple addresses belong to the same wallet once those funds are spent together. For most users, this is sufficient for normal payment separation. An employer, a freelance platform, and a peer-to-peer contact each see a different address and cannot easily learn about the others. From the wallet’s perspective, organization is improved without requiring additional backup complexity.
Stealth addresses: reactive privacy rather than reactive separation
A stealth address works by a fundamentally different mechanism. Instead of the wallet precomputing multiple receive addresses, the stealth address protocol generates a one-time address for each transaction. The sender uses the recipient’s public key material to derive an ephemeral key, combines it with the recipient’s data, and creates a unique address for that specific payment. The recipient cannot publish a meaningful „stealth address“ in the traditional sense because the address is created during the sending process, not in advance.
This mechanism changes the privacy model. Because each payment generates a unique address, address reuse is mathematically impossible. An observer sees multiple addresses receiving funds but cannot determine whether they belong to one wallet, multiple wallets, or a single recipient using a stealth protocol. The recipient publishes a single stealth address or stealth key, which counterparties use to generate unique addresses for each payment. From the outside, it appears as if funds are flowing to completely unrelated destinations.
The computational cost is borne differently as well. Subaddresses require only indexing during wallet setup; the wallet generates them once and reuses them. Stealth addresses require the recipient to scan incoming blocks and perform cryptographic operations to identify which transactions are destined for them. This scanning must be done regularly—ideally in real time or shortly after blocks are added to the chain. A user who does not scan frequently may miss incoming payments until later. XMRWallet handles this through background synchronization, allowing users to receive stealth payments without manually querying the blockchain.
The practical result is that stealth addresses provide stronger privacy against external observers but require more active wallet participation. They are more similar to Monero’s native stealth address behavior than subaddresses are. Because Monero’s base protocol uses a stealth-address-like mechanism for all transactions by default, supporting explicit stealth address functionality in a privacy wallet extends the protocol’s privacy model rather than replacing it.
When subaddresses are sufficient for your use case
Most routine payment segregation does not require stealth addresses. If a user receives a salary from one employer, payments from a freelance platform, and occasional transfers from friends, creating a subaddress for each is simple and effective. Each subaddress receives payments independently. The employer never learns the freelance payment address, and the friend does not see the salary subaddress. This provides the essential privacy benefit for typical users: counterparties cannot link payments to different recipients or infer the total transaction volume.
Subaddresses are also appropriate when privacy from the outside world is less critical than privacy from other entities that might observe the blockchain. If a user trusts their ISP or local network operator but does not want a payment service provider to know about other income sources, subaddresses provide the separation needed. The payment service provider only knows the subaddress they were given. They cannot easily determine whether that address also receives funds from other sources, and they certainly cannot see those sources without additional information.
The administrative advantage of subaddresses should not be overlooked. A user managing five or six separate payment streams can create that many subaddresses and monitor them from a single wallet, with a single recovery phrase and unified balance management. There is no need to maintain separate backups, remember multiple wallet files, or coordinate keys across devices. The wallet interface can label each subaddress with its purpose, making it clear which address is for rent, which is for salary, and which is for savings. This clarity comes without significant privacy cost for most users.
Subaddresses are also the correct choice when the user needs to spend funds later and wants to benefit from those funds consolidating into a single transaction. Because all subaddresses are part of the same wallet, spending from multiple subaddresses creates a single transaction with multiple inputs. This is more efficient than maintaining separate wallets and can actually provide a privacy benefit if the wallet’s transaction structure is carefully designed, since consolidation can be less distinctive than keeping funds artificially separated.
When stealth addresses become necessary
Stealth addresses become important when a user wants to minimize the metadata that even the wallet itself can use to link payments. If a user publishes a single stealth address publicly—for instance, on a website or in forum signature—each visitor can generate unique stealth addresses for sending funds. No two visitors will generate the same address. An outside observer, even with access to the blockchain, cannot see that all these payments went to the same recipient. The stealth address provides the strongest form of receive-side privacy.
This is particularly valuable for users in higher-risk environments or those who want to publish a single receiving address without exposing the full transaction history associated with it. A journalist, activist, or whistleblower accepting tips can publish a single stealth address and receive funds from many sources without any external party being able to link those sources or determine the total funds received. Each payment appears to go to a different address. The recipient knows they belong to the same address because the private key allows identifying them during scanning, but that knowledge is not available to observers without the private key.
Stealth addresses also become useful when integrating with services that generate payment addresses dynamically. A payment processor or merchant could generate a unique stealth address for each transaction without needing to manage a database of precomputed subaddresses. This reduces the operational burden on the merchant side while providing better privacy to customers. Each customer receives a unique address, and the merchant can identify all payments received using a single private key.
Another scenario involves receiving payments from untrusted counterparties. If a user publishes a subaddress to multiple parties and later suspects one of them of dishonesty or surveillance, the subaddress itself becomes compromised. Switching to a new subaddress for future payments is straightforward, but the old subaddress continues to receive the same funds, and observers who knew about it can continue monitoring. With stealth addresses, each new sender generates a new address, so compromising one sender’s knowledge does not automatically reveal future payments from others.
Privacy implications of mixing both approaches
A sophisticated user might employ both subaddresses and stealth addresses within the same wallet. Subaddresses could be reserved for regular, trusted payments where organization matters more than maximum privacy. Stealth addresses could be used for public-facing receiving or for interactions with untrusted parties. This hybrid approach requires careful mental discipline: the user must remember which address type they gave to which counterparty and understand the different privacy guarantees each provides.
One critical risk is accidentally publishing a subaddress when a stealth address would be more appropriate. If a user posts a subaddress in a public forum expecting it to behave like a stealth address, they will be disappointed. The subaddress itself will be observed and could be reused by multiple senders, defeating the intended separation. Conversely, publishing stealth addresses to trusted counterparties adds unnecessary complexity without benefit; a subaddress provides sufficient organization and is simpler to manage.
Mixing approaches also requires understanding that the privacy guarantees do not stack. Using a subaddress does not make stealth addresses stronger, and using a stealth address does not retroactively improve the privacy of subaddresses already used. Each address type operates independently. The overall privacy of the wallet depends on which type is used for each payment context and whether that choice matches the actual threat model and use case.
The scanning burden also differs. Subaddresses require no additional scanning; the wallet checks for them during normal synchronization. Stealth addresses require active scanning of incoming blocks to identify payments. If a user employs both and receives many payments on stealth addresses, the scanning workload increases. Background synchronization mitigates this, but the user should be aware that stealth address usage increases the computational work done by the wallet.
Practical decision framework for address selection
Before choosing between subaddresses and stealth addresses, a user should answer four questions. First, who is the counterparty, and do they need to know about other payments I receive? If the answer is no—if the employer should not know about freelance work, or the friend should not know about commercial payments—a subaddress is appropriate. The counterparty sees only their assigned address and cannot easily link it to others.
Second, am I publishing this address publicly, or sharing it only with a specific person? A public-facing address should generally be a stealth address to prevent address reuse and external linking. A privately shared address can be a subaddress if the recipient is trusted and organizational simplicity is preferred. Third, how much privacy do I need against external observers versus against the counterparty themselves? If external privacy is paramount, stealth addresses provide stronger guarantees. If counterparty separation is the main concern, subaddresses are more efficient.
Fourth, will I need to spend funds from this address immediately, or will I accumulate them? Subaddresses are designed for accumulation and consolidation; all funds stay in the same wallet and can be spent together. Stealth addresses are designed for receipt and may accumulate across many independent addresses, though the wallet still sees them as part of the same account when spending. The spending behavior should match the receiving strategy.
A user receiving monthly salary from one employer and occasional freelance payments from multiple clients might create one subaddress for salary (stable, from one source, no privacy concerns against the employer) and one stealth address for freelance work (variable, from many sources, potential privacy benefit from external unlinkability). A user selling goods online might use subaddresses for repeat customers but stealth addresses for one-time buyers. A whistleblower or activist would use stealth addresses exclusively for public appeals.
Implementation details in non-custodial wallets
The technical implementation of both subaddresses and stealth addresses in a non-custodial wallet like XMRWallet has important implications for usability and security. Since the wallet generates keys locally on the user’s device and never transmits private keys to a server, both address types are equally secure at the cryptographic level. The difference lies in how the wallet presents these options and how it manages the synchronization process.
Subaddress management is straightforward: the wallet maintains an index of generated subaddresses and displays them to the user for selection. Recovery is simple because subaddresses are deterministically derived from the private seed; any wallet can reconstruct them given the seed and the history of generated indices. This means a user who loses their wallet file but retains their recovery phrase can restore all subaddresses in any compatible wallet.
Stealth address functionality is more complex because the wallet must continuously scan incoming blocks to identify payments. This requires either running a local full node or using a privacy-preserving scanning service. Background synchronization, supported by the wallet, allows this scanning to happen automatically without user intervention. However, if the user exports their stealth address key and attempts to recover funds in a different wallet, that wallet must perform the same scanning process, which can be slower if it lacks optimization.
A user should also understand that deleting a subaddress from the wallet interface does not prevent future payments to it. If the subaddress index is known, a sender can still generate the address and send funds to it. The wallet will receive and display those funds during synchronization. This is actually a privacy feature: it prevents outside observers from learning that a subaddress has been „retired.“ However, it also means that address retirement is not absolute; careful record-keeping of which subaddresses have been compromised or retired is the user’s responsibility.
Testing your understanding with a practical scenario
Consider a user who receives Monero from three sources: a full-time job (monthly, from one employer), a part-time consultancy (weekly, from multiple clients), and peer-to-peer transactions with friends. The user also wants to publicly solicit donations for a privacy cause without revealing how much has been received or from where.
The correct approach would be to create one subaddress for the full-time employer. This is a stable, trusted relationship where organizational simplicity is appropriate, and there is minimal privacy concern against the employer. For the consultancy, the user might create multiple subaddresses if the clients are long-term and known, or use a stealth address if clients are transient and unknown. For peer-to-peer transactions, subaddresses are simpler if the friends are few and stable; a stealth address makes sense if the user frequently receives from new acquaintances.
For the public donation address, a stealth address is essential. The user publishes one stealth address in forums, on websites, and in social media. Each donor generates their own unique address from the stealth address; no two donors see the same address. The user receives funds from dozens or hundreds of sources, but external observers cannot determine the total amount received or link the payments to a common recipient. The user knows all the funds are theirs because their private key identifies them during scanning, but that information is not exposed to the outside world.
This scenario demonstrates that neither subaddresses nor stealth addresses is universally better. The right choice depends on the specific context, the counterparty, and the privacy objectives. A flexible wallet that supports both—as non-custodial implementations should—empowers users to make informed decisions rather than forcing a one-size-fits-all approach.
Frequently asked questions
Can external observers tell whether I used a subaddress or a stealth address to receive a payment?
No. From the blockchain perspective, all Monero transactions use stealth-like address behavior by default. Both subaddresses and stealth addresses appear as normal Monero transactions to external observers. The difference is in how the recipient generates and manages the receiving address, not in how the transaction appears on the chain. An observer cannot determine which addressing method was used.
If I lose my wallet file, can I recover all my subaddresses?
Yes. Subaddresses are deterministically derived from your private seed using a numerical index. Any Monero wallet, including compatible non-custodial implementations, can regenerate all subaddresses given your recovery phrase and the correct derivation process. You will recover all funds without needing a separate backup for each subaddress.
Should I use stealth addresses if I’m receiving payments from only one trusted employer?
Probably not. A subaddress is simpler and more efficient for a single, stable, trusted relationship. Stealth addresses are most valuable when you are publishing an address publicly, receiving from many untrusted sources, or want to minimize the linkability of multiple payments from external observers. For routine payment organization from known counterparties, subaddresses provide sufficient privacy with less computational overhead.
