Your wallet.dat opened. Bitcoin Core is running, the wallet is loaded, and the balance says
0.00000000. Or it says something, just far less than it should. Or the addresses in it are ones
you have never seen before.
This is the most common false alarm in Bitcoin Core recovery, and it is worth saying plainly before anything else: if the wallet opened, your keys are fine. A wallet file that loads is a wallet file whose contents are readable. The coins those keys control sit on the blockchain regardless of what the balance field says, and no amount of wrong-looking numbers on your screen changes who can spend them. What you are almost certainly looking at is a node that has not been told to go and find your history.
Everything below applies equally to Bitcoin-Qt, which is the older name for the same program, so if you searched for "Bitcoin-Qt restored but no balance" you are in the right place. It also applies to Litecoin, Dogecoin, Bitcoin Cash and the other coins that inherited Bitcoin Core's wallet code.
This comes out of years of doing this work for clients of my Bitcoin Core wallet recovery service. If the wallet will not open at all, that is a different problem, covered in how to recover a corrupt or deleted Bitcoin Core wallet.
Before you change anything, copy the file
Locked out of a wallet like this one?
I repair hardware wallets, crack forgotten passwords, and rebuild broken seed phrases — on my own bench in Denver.
Make a read-only copy of wallet.dat and put it somewhere you will not touch. Nothing in this
guide is destructive, but the moment a zero balance panics somebody into trying software they
found on a forum, the situation gets worse. Work on the copy.
Do not type your wallet password, seed words, or private keys into any website offering to check your balance, and do not send your wallet file to anyone who contacted you first. If you are weighing up who to trust, read how to tell a legitimate recovery service from a scam before you share anything with anybody.
Check in this order
The causes below are ordered by how often they turn out to be the answer. Work down the list rather than jumping to the alarming one.
Has the blockchain actually finished syncing?
Bitcoin Core shows no balance for coins that arrived in blocks it has not processed yet. The status bar at the bottom of the window tells you where it is, and on a fresh install with a full chain to download this can take days, not minutes.
Let it finish before concluding anything. A wallet that reads zero at 62% synced is behaving exactly as designed.
The wallet needs a rescan
This is the single most common answer, and it catches people because the software gives no hint that it is the problem.
Bitcoin Core builds your balance from transactions it saw as it processed each block. A wallet you have just restored from a backup was not loaded when its own transactions confirmed, so the node has never associated those blocks with these keys. The chain is fully synced, the keys are present, and the balance is still zero, because nobody has connected the two.
A rescan connects them. Open Window → Console and run:
rescanblockchain 0
The 0 means start from the genesis block, which is thorough and slow. If you have any idea when
the coins arrived, pass a starting block height instead and the scan finishes far sooner. You can
also launch the program with the -rescan flag to do the same thing at startup.
The balance does not update partway through. It updates when the scan completes.
Why a pruned node cannot rescan, and what to do instead
If you enabled pruning to save disk space, Bitcoin Core deletes old block data once it has verified it. A rescan has to read the actual blocks, so it can only cover the range still on disk. If your coins arrived before the pruned height, there is physically nothing left locally to scan, and the rescan will fail or silently cover nothing useful.
Reindexing does not rescue this. -reindex rebuilds indexes from the blocks you have, and the
blocks you need are the ones that were deleted.
The fix is to get the wallet in front of a full chain: turn pruning off in the settings and resync from scratch, or copy the wallet file to a machine that already holds a complete copy of the blockchain. This is the most common reason someone rescans three times and stays at zero.
Bitcoin Core loaded the wrong wallet
"It opened, but it is the wrong wallet" is usually true in a way people do not expect: the file that opened really is a wallet, it just is not the wallet.
Anyone who ran Bitcoin Core across several years and several machines tends to accumulate
wallet.dat files. The live one. Backups from three different eras. A copy made before a
reinstall. An empty one created automatically when a fresh install found no wallet at all. That
last case is the cruel one, because a brand new empty wallet looks identical to a restored wallet
that has lost everything.
Confirm what is actually loaded. In the console:
listwallets
getwalletinfo
getwalletinfo reports the wallet name and its transaction count. A wallet with zero
transactions after a completed rescan is either genuinely empty or newly created.
Then check the addresses rather than trusting the balance. Pull an address out of the wallet and
look it up on any block explorer. The explorer reads the blockchain directly and does not care
what your node thinks. If the explorer shows funds on an address your wallet holds, the coins are
there and this is a rescan or pruning problem. If the explorer shows nothing on any of them, you
have the wrong file, and the right one is likely another wallet.dat in a wallets subfolder or
on an old backup drive.
If you have a pile of candidate files and no idea which is which, our free wallet file inspector identifies what each one is and what it contains, in your browser, without the file ever leaving your machine.
The balance is lower than you remember: keypool gaps and missing change
A backup that shows some coins but not all of them is a different failure, and an important one to recognise because the usual advice does not fix it.
Very old wallets pre-generated a limited pool of spare keys, historically 100 of them. Every time you spent bitcoin, the change came back to a fresh key from that pool. If you kept using the wallet after taking your backup, and spent enough to exhaust the keys the backup knew about, the change from those later payments landed on keys created afterwards. Your backup has no record of them. It is not damaged; it is a snapshot from before those keys existed.
No rescan recovers this, because the keys are not in the file. What recovers it is any surviving copy of the newer wallet data, including deleted fragments still sitting on the original drive. That is forensic work rather than a configuration change, and it is one of the cases where attempting it badly destroys the evidence. If this is your situation, stop and read recovering a deleted wallet file before you run anything else against that drive.
Legacy wallets, descriptor wallets, and addresses that seem to vanish
Recent Bitcoin Core releases are moving away from the legacy wallet format that every pre-2021
wallet.dat uses, in favour of descriptor wallets. A migrated wallet can look wrong immediately
afterwards while the node works out which addresses it now considers its own.
If you migrated and the balance changed, let any rescan finish before judging the result, and check the addresses against a block explorer as above. If the current version refused to open the wallet until you migrated it, the safest path is the one in restoring a wallet.dat backup into modern Bitcoin Core: load it in an older release that still opens legacy wallets directly, let it rescan, and move the coins to a new wallet from there.
Wrong coin, wrong network
A wallet.dat from Litecoin, Dogecoin or Bitcoin Cash opens in Bitcoin Core and shows nothing,
because the keys are real but the chain is not theirs. The same is true of a testnet wallet
opened on mainnet. If the wallet came from a period when you were mining or trading several
coins, check that you have it in front of the right client before spending days on rescans.
Bitcoin-Qt restored but no balance: the same answers, older names
Bitcoin-Qt is Bitcoin Core under its original name, so every cause above applies unchanged. The practical difference is that a wallet old enough to be called a Bitcoin-Qt wallet is old enough to hit the keypool problem, old enough to be in the legacy format, and old enough that the person restoring it is often working from a backup taken years after the wallet was last used. Start with the rescan, but expect the keypool section to be relevant more often than it is for newer wallets.
When zero really does mean zero
Sometimes the honest answer is that the wallet is empty. The way to establish that is the block explorer check, not the balance field: if you have confirmed the file is the right one, the chain is fully synced, a full rescan has completed, and no address in the wallet has ever received anything according to an independent explorer, then this wallet never held the coins you are looking for. That usually means the coins are in a different file, and the search moves to finding it.
We will tell you when that is what we are seeing. Being told a wallet is empty is worth more than being charged to keep looking.
When to get help
The steps on this page are safe. The one genuinely destructive scenario is the keypool case, where the missing change keys exist only as deleted data on a drive that every further tool run erodes.
If the wallet holds more than pocket change and a completed rescan on a full node has not brought the balance back, that is a sensible point to ask for a free assessment. We do Bitcoin Core recovery on a no-recovery, no-fee basis, and we will tell you honestly if your case is not worth pursuing.
