How to Fix Bitcoin Wallet Showing 0 Balance After Restore
You restored your Bitcoin wallet from a seed phrase and it shows zero. The Bitcoin isn't gone — your wallet just can't see it. Here's how to get it back, step by step.
Why Your Wallet Shows 0 Balance
When you restore a Bitcoin wallet from a seed phrase, the wallet generates addresses sequentially and checks each one for transactions on the blockchain. But it doesn't check every possible address — it uses a rule called the gap limit.
The gap limit (usually 20) tells the wallet: "if you see 20 consecutive empty addresses, stop looking." If your Bitcoin sits at an address beyond that gap, the wallet stops before it gets there. Your balance shows as zero.
This is the single most common reason for a Bitcoin wallet to show 0 balance after a restore. Other possible causes include:
- Wrong derivation path — the wallet uses a different BIP standard than the one your funds are on
- Wrong seed phrase — you may have multiple seeds for different wallets
- Passphrase mismatch — if you used a BIP-39 passphrase (sometimes called the "25th word"), you need to enter it during restore
- Blockchain not fully synced — some wallets need time to download and verify the blockchain
This guide focuses on the gap limit cause, which accounts for the vast majority of cases.
What You'll Need
- Your wallet's extended public key (xpub, ypub, or zpub) — this is a public key that cannot spend funds
- Access to GapFix (or any tool that scans beyond the standard gap limit)
- A way to send a small amount of Bitcoin (a few hundred satoshis per gap address)
Step 1: Find Your Extended Public Key
The extended public key (xpub, ypub, or zpub) is a master public key that lets you derive all your receive addresses without exposing your private keys. Here's where to find it in popular wallets:
| Wallet | Location | Key Type |
|---|---|---|
| Electrum | Wallet → Information → Master Public Key | zpub (native segwit) or xpub (legacy) |
| Ledger Live | Account → Edit → Advanced → Extended Public Key | xpub |
| Trezor Suite | Account → Details → Show Public Key (XPUB) | xpub, ypub, or zpub |
| Sparrow | Settings → Keystore → Master Public Key | zpub or xpub |
| Coldcard | Advanced → View Identity → Master XPUB | xpub |
| BlueWallet | Wallet → Details → Show XPUB | zpub |
Is it safe to share my xpub?
An xpub is a public key — it can derive your receive addresses but cannot spend your Bitcoin or reveal your private keys. GapFix runs entirely in your browser and never sends your key to a server. That said, anyone with your xpub can see all your addresses and balances, so treat it as private for privacy reasons.
Step 2: Scan with GapFix
- Open gapfix.net
- Paste your extended public key into the input field
- Click "Scan for Gap Issues"
GapFix will derive up to 2,000 addresses (1,000 external receive addresses + 1,000 change addresses) and check each one against the blockchain. It scans all four address formats automatically:
- P2PKH — Legacy addresses starting with
1 - P2SH-P2WPKH — Wrapped SegWit addresses starting with
3 - P2WPKH — Native SegWit / bech32 starting with
bc1q - P2TR — Taproot starting with
bc1p
The scan typically takes 2–5 minutes. When complete, GapFix shows you:
- How many gap addresses exist (empty addresses blocking the scanner)
- The total hidden balance sitting beyond the gap
- A copy-ready list of addresses that need dust transactions
Step 3: Send Dust to Gap Addresses
"Dust" is a tiny amount of Bitcoin sent to fill the gap. Once each empty gap address has a transaction, your wallet's scanner will continue past it.
Minimum dust amounts
| Address Type | Prefix | Minimum Dust |
|---|---|---|
| Legacy (P2PKH) | 1... |
546 sats |
| Wrapped SegWit (P2SH) | 3... |
546 sats |
| Native SegWit (P2WPKH) | bc1q... |
294 sats |
| Taproot (P2TR) | bc1p... |
294 sats |
How to send dust efficiently
The most efficient method is a batch transaction — sending to all gap addresses in a single transaction. This saves on fees compared to individual sends.
- In GapFix, click "Copy addresses" — this copies all gap addresses and their dust amounts in tab-separated format
- In your wallet, use the batch send or "send to many" feature:
- Electrum: Tools → Pay to many
- Sparrow: Send → Add output (for each address)
- Bitcoin CLI:
bitcoin-cli sendmany
- Paste the address list and send
Total cost is typically a few thousand satoshis (a few cents USD) for a handful of gap addresses, plus the standard transaction fee.
Step 4: Rescan Your Wallet
After the dust transactions have at least 1 confirmation (about 10 minutes), trigger a rescan in your wallet:
| Wallet | How to Rescan |
|---|---|
| Electrum | Wallet → History → right-click → Rescan, or close and re-open the wallet |
| Ledger Live | Close and re-open the account, or use Settings → Help → Clear cache |
| Trezor Suite | Disconnect and reconnect the device, or resync from Settings |
| Sparrow | Wallet → UTXOs → Rescan Blockchain |
Your wallet will now scan address 0, 1, 2... encounter the dust transactions on the previously-empty gap addresses, continue scanning, and discover the hidden Bitcoin beyond the gap. Your full balance should appear.
Still Showing 0? Troubleshooting
Wrong derivation path
If GapFix also shows 0 across all address types, the issue may not be the gap limit. Your funds might be on a different derivation path. Common paths:
m/44'/0'/0'— BIP-44 legacy (P2PKH)m/49'/0'/0'— BIP-49 wrapped SegWit (P2SH-P2WPKH)m/84'/0'/0'— BIP-84 native SegWit (P2WPKH)m/86'/0'/0'— BIP-86 Taproot (P2TR)
Try importing your seed into a wallet that supports all derivation paths (Sparrow is excellent for this).
BIP-39 passphrase
If you originally set up your wallet with a passphrase (sometimes called the "25th word" or "hidden wallet"), you must enter the same passphrase when restoring. Without it, the wallet derives a completely different set of addresses.
Multiple accounts
Some wallets support multiple accounts under the same seed (BIP-44 account index). If your funds are in account 1 (m/84'/0'/1') but your wallet only scans account 0, they won't appear. Check if your wallet supports adding additional accounts.
Dust not confirmed yet
Wait for at least 1 block confirmation before rescanning. If you sent with a very low fee, the dust transaction may take longer to confirm.
Understanding UTXOs and Why This Works
Bitcoin doesn't have "accounts" with balances the way a bank does. Instead, your balance is the sum of Unspent Transaction Outputs (UTXOs) — individual chunks of Bitcoin locked to your addresses.
When a UTXO exists at address index 50 but your wallet stops scanning at index 20 (the gap limit), it simply doesn't know the UTXO is there. The Bitcoin is perfectly safe on the blockchain — the wallet just can't see it.
By sending dust to the empty addresses between index 20 and 50, you give each address a transaction. The wallet scanner sees those transactions, thinks "there might be more funds ahead," and keeps scanning until it finds your UTXO at index 50.