Monero Subaddresses Explained — One Wallet, Unlimited Addresses

TL;DR: Monero subaddresses let you generate unlimited receiving addresses from a single wallet. Each subaddress is unlinkable to every other — no one can tell they belong to the same wallet. Use a fresh subaddress for every sender. Primary addresses start with 4, subaddresses start with 8.

What Are Subaddresses?

Every Monero wallet has one primary address (starts with 4). From this, you can derive an unlimited number of subaddresses (start with 8). They all share the same wallet — same seed, same balance, same spend key — but from the outside, each subaddress looks like a completely independent wallet.

Primary Address (starts with 4)
4AdUndXHHZ6cfufTMvppY6JwXNouMBzSkbLYfpAV5Usx3sk...
Subaddress #1 (starts with 8)
8BcrwXEigvWYE3xGwVkKiSsMhvUGgSj2KJrXfNyA5VYV1fH...
Subaddress #2 (starts with 8)
8Dfk5RoJeW8iCvN4bLmT7VUXqEzLkR9W3d2HfGcK4XPbYnB...

An outside observer — even one monitoring the Monero network — cannot link subaddress #1 to subaddress #2 or to the primary address. They look like three separate wallets.

How Subaddresses Work (Technical)

1
Wallet has private view key a and public spend key B
2
Derive: D = Hs(a || i) * G + B
3
Subaddress i = new public key pair

The math: Each subaddress is derived using a hash of your private view key combined with an index number. The index is just a counter (0, 1, 2, ...). Because the derivation uses a cryptographic hash, knowing one subaddress reveals nothing about any other. The derivation is deterministic — the same seed always generates the same subaddresses in the same order.

Key properties:

Why Use Subaddresses?

Prevent Address Linkage

Give each sender a unique address. They can't tell you're the same person. Like having unlimited bank accounts with no paperwork.

Track Payment Sources

Label each subaddress: "Alice," "Bob," "Shop revenue." When funds arrive, you know exactly who sent them.

Merchant Invoicing

Generate a unique subaddress per order. Match incoming payments to orders automatically. No payment ID needed.

Donation Addresses

Use one subaddress per project or cause. Track donations separately while keeping them in one wallet.

Exchange Deposits

Most exchanges give you a subaddress (starting with 8) for deposits. This lets them track which deposit belongs to which user.

P2P Trading

Give each trade counterparty a fresh subaddress. No one can estimate your total volume by watching one address.

Subaddresses vs Other Address Types

Feature Primary Address (4...) Subaddress (8...) Integrated Address (4...+payment ID)
Prefix484 (longer)
GenerationOne per walletUnlimitedFrom primary + 8-byte ID
Linkable to wallet?Yes (it IS the wallet)No (unlinkable)Yes (derived from primary)
Payment IDN/ANot neededEmbedded
Recommended?Only for legacyYes — always useDeprecated
Used byOld softwareAll modern walletsBeing phased out

Integrated addresses are deprecated. They were used before subaddresses existed to embed payment IDs. Since 2019, the Monero community recommends subaddresses instead. Most wallets have dropped integrated address support. If someone asks you to use an integrated address, they're running very old software.

Subaddresses vs Stealth Addresses

People often confuse these. They're different privacy layers that work together:

Aspect Subaddress Stealth Address
Created byReceiver (you generate it)Sender (created during TX)
WhenBefore transaction (you share it)During transaction (automatic)
Visible on chain?No (only shared off-chain)Yes (appears in TX output)
PurposePrevent sender linkagePrevent on-chain linkage
How many?Unlimited per walletOne per transaction output
AnalogyGiving each friend a different phone numberCall forwarding to a number only you know

They stack. When someone sends XMR to your subaddress, a stealth address is still generated on-chain. So even if two senders share the same subaddress, the on-chain outputs are still unlinkable. Subaddresses add an extra layer of privacy on top of stealth addresses.

How to Generate Subaddresses

In Feather Wallet

Receive tab → Click "Create new address" → Label it (e.g., "Alice payment") → Share the 8... address.

In Cake Wallet

Receive screen → Tap the "+" icon or "New subaddress" → Name it → Share the QR code or address.

In Monero CLI

$ monero-wallet-cli [wallet]: address new "Alice payment" 1 8BcrwXEigvWYE3xGwVkKiSsMhvUGgSj2KJr... Alice payment [wallet]: address all 0 4AdUndXHHZ6cfufTMvppY6JwXNouMBzSkbL... Primary address 1 8BcrwXEigvWYE3xGwVkKiSsMhvUGgSj2KJr... Alice payment 2 8Dfk5RoJeW8iCvN4bLmT7VUXqEzLkR9W3d2... Bob trades

In Monero GUI

Receive tab → "Create new address" button → Optional label → Copy the 8... address.

Best Practices

1. Never reuse subaddresses across senders. Give each person a fresh one. Reusing lets that sender see if they've paid you before (though on-chain privacy is still preserved by stealth addresses).

2. Label your subaddresses. "Exchange deposit," "Alice," "Shop orders Q1" — makes tracking easy.

3. Never share your primary address. It was historically used as an identifier. Use subaddresses exclusively.

4. For P2P trading: Generate a new subaddress for every trade. This prevents counterparties from linking your trading history.

5. For merchants: Generate per-order subaddresses. Match payments to orders by address rather than payment IDs (deprecated).

Accounts vs Subaddresses

Monero wallets support accounts (separate balance buckets) and subaddresses (addresses within each account). Think of it as:

Account 0 (default) → Subaddress 0 (primary), Subaddress 1, Subaddress 2, ...

Account 1 (created by user) → Subaddress 0, Subaddress 1, ...

Each account has its own balance. Funds don't mix between accounts unless you transfer between them. Most users only need Account 0 with multiple subaddresses.