BitcoinDatabase.com
All posts
Data guides

Dormant Bitcoin Wallets: How to Tell If an Address Is Asleep

The Bitcoin Pizza address received 10,000 BTC in 2010, spent it ten minutes later, and has taken tribute payments ever since, including on three Pizza Day anniversaries. Sorted by last activity it looks alive. Sorted by last spend it has been dormant for sixteen years. We tested what three public APIs actually return for that address on 13 August 2026, and none of them gave a date.

By the BitcoinDatabase team

August 2026 · 8 min read

Query Console
btc
try:

Hit Run to query the fully-indexed Bitcoin blockchain.

BTC

30-day trend

informational on-chain data · not financial advice

REST API · SQL · dashboards, one indexed dataset. Querying the indexed Bitcoin blockchain ...

The short answer

A Bitcoin wallet is dormant when it has not spent in years, not when it has stopped receiving. Those are different questions and they give different answers: the Bitcoin Pizza address last spent in May 2010 and last received in May 2026. The catch is that the public address endpoints do not return a spend date at all. We called three of the most used ones on 13 August 2026 and none of them returned a timestamp of any kind, so the date has to come from the transaction history or from a chain that is already indexed by last spend.

Dormancy sounds like the easiest thing on the blockchain to measure. The chain is public, every transaction is timestamped, so finding wallets that have gone quiet should be a filter. In practice almost everyone who tries it gets a number that is wrong in one of two ways, and both mistakes come from the same place: the tooling makes the easy question convenient and the correct question expensive.

Start with the address that breaks every dormancy screen

On 22 May 2010, at 18:16 UTC, an address received 10,000 BTC in block 57,043. Ten minutes later, in block 57,044, it spent all 10,000 BTC. That was Laszlo Hanyecz paying for two pizzas, and it is the only time that address has ever spent anything.

What happened next is the interesting part. People kept sending it money. We pulled its full transaction list on 13 August 2026 and it holds seventeen transactions: one receive, one spend, and fifteen more receives spread across sixteen years. The tribute payments total 379,983 satoshis and none of them have ever been moved. Look at when they landed:

Date (UTC) Block Direction
2010-05-22 18:1657,043Receive, 10,000 BTC
2010-05-22 18:2657,044Spend, 10,000 BTC (the only spend, ever)
2015-04-19 00:14352,701Receive
2017-07-04 20:17474,237Receive
2018-10-23 19:53547,057Receive
2020-02-04 16:18615,962Receive
2023-01-24 09:38773,371Receive
2023-05-22 19:19790,931Receive (Pizza Day)
2024-05-22 07:43844,547Receive (Pizza Day)
2024-05-25 18:22845,121Receive (two outputs)
2024-07-07 12:03851,093Receive
2024-10-07 01:53864,522Receive
2024-12-13 07:28874,525Receive
2026-03-31 10:13943,050Receive
2026-05-22 14:44 and 15:31950,526 and 950,531Receive (Pizza Day, twice)

Three separate Pizza Day anniversaries show up in that list. Somebody sends the pizza address a few thousand satoshis every 22 May, which is a nice thing about this industry and also a serious problem for anyone building a dormancy screen.

Because now ask the question two ways. When was this address last active? March and May 2026, so it looks live. When did this address last spend? May 2010, sixteen years and change ago. The coins on it have never moved. If your screen sorts by last activity, this address and every address like it drops off your dormant list, and those are exactly the addresses you were looking for. Anyone can send coins to an address they do not control, which means last activity is a signal partly under a stranger's control. Last spend is the only side of it that requires the owner's key.

Why the public APIs will not just tell you

Here is the part that surprises people. We called the three most widely used public address endpoints from a US server on 13 August 2026, single polite requests, and asked each for that address. None of them returned a date.

Endpoint What the address object contains Any timestamp?
Blockstream Esplora /address/{addr}Three keys. The useful one holds funded and spent output counts and sums, plus a transaction countNone
mempool.space /address/{addr}Byte-for-byte the same three keys and the same figuresNone
BlockCypher /addrs/{addr}/balanceNine fields: address, balance, final balance, transaction counts, total received, total sent and the unconfirmed pairNone

Both Esplora-style responses will cheerfully tell you this address has spent exactly one output in its entire life, and refuse to say when. That is the whole dormancy question, one field away, and it is not there. Blockchair does document a last-seen-spending field, which would solve this neatly, but our unauthenticated request on the same day came back HTTP 430 with a message saying the IP was temporarily blacklisted for exceeding usage, so plan on getting a key before you rely on it.

The workaround is to fetch the transaction list, take the newest transaction that spends from the address, and read its block time. That works. It is also why dormancy screening gets expensive fast. The transaction list endpoint returns full transaction objects, inputs, outputs, scripts and all, twenty five to a page, and you are keeping one integer from all of it. For one address that is nothing. For a list of 10,000 addresses it is 10,000 extra round trips minimum, more for any address with real history, against providers that rate limit you. BlockCypher's free tier allows 100 requests an hour, so that screen alone would take over four days.

How to check whether a Bitcoin address is dormant

The method, in the order that actually works:

  1. Fix your definition first, in writing. Dormant since when? Five years is the common threshold, ten years for the satoshi-era question. Write it down, because every number you produce afterwards is meaningless without it.
  2. Use last spend, not last activity. Pull the address transaction list and find the newest transaction where the address appears in the inputs. Receives do not count, for the reason the pizza address demonstrates.
  3. Decide whether you are measuring addresses or wallets. One person can hold a thousand addresses. If you want dormant wallets rather than dormant addresses you need address clustering first, and clustering has known failure modes that are worth understanding before you quote a figure.
  4. Score it with coin days destroyed. For every spent input, multiply the amount by the days those coins sat unspent. A coin from the pizza era moving today destroys 5,927 coin days per BTC. A coin that moved yesterday destroys almost none. This is the standard way analysts separate genuinely old supply moving from ordinary daily churn.
  5. Watch it forward, do not just snapshot it. The valuable event is a wake-up: a long-dormant address spending for the first time in a decade. That needs a standing filter and a webhook, not a monthly report.

Dormant is not the same as lost

This is the mistake that turns a good analysis into a bad headline. Dormancy is observable: the coins have not moved, and the chain proves it. Whether anyone still holds the keys is not observable at all, from any dataset, ever.

Long-term holders, cold storage that is working exactly as intended, estates in probate, institutional custody and genuinely lost keys all produce an identical on-chain signature, which is silence. This is why published estimates of lost Bitcoin vary so widely. They are not measuring different chains, they are applying different definitions to the same one. Any figure quoted without stating its dormancy threshold, its clustering method and its treatment of provably unspendable outputs cannot be compared to any other figure. When you publish a number, publish those three choices next to it.

There is a related point worth being blunt about, because the search results around this topic are full of it. No amount of chain analysis produces a private key. Addresses and balances are public, keys are not, and the arithmetic between them only runs one way. Services offering lists of dormant wallets with recoverable keys are selling a scam, and anything that asks for a seed phrase is trying to take your coins.

What a wake-up actually means

When a decade-old address moves, it gets reported within minutes and the interpretation is usually wrong. The chain shows a transfer. It does not show intent. A 2013 address spending into two fresh addresses is far more likely to be a custody migration, an estate settlement or a firm consolidating storage than anybody selling. Coins moving to a labeled exchange deposit address is a different and much stronger signal, which is why exchange flow data and entity labels matter more than the movement alone.

If those coins are yours and you are the one moving them, the awkward part is not the analytics. It is that a disposal of coins acquired in 2011 needs a cost basis, and the records from that era are usually a screenshot and a memory. Working out what you owe on a fifteen-year-old acquisition is genuinely painful, and it is worth getting the tax side prepared before you touch the coins rather than the following April. On the chain side you can at least reconstruct exactly what the address held on the acquisition date and every date since, which is the evidence half of the problem.

The shortcut

Everything above is a description of work you do not have to do if the chain is already indexed by the fields the question needs. On dormant Bitcoin wallet data here, last spend, last receive, first activity and coin age are columns on the address record. Finding every address holding more than 50 BTC that has not spent since 2013 is a filter, not a crawl, and coin days destroyed over a block range is a query rather than a pipeline. You can also run it across a supplied address list in one pass, or read the same data in SQL if you would rather join it against labels and flows.

Every figure in this article was measured on 13 August 2026 and the block heights are printed so you can check them against any explorer. The pizza address is a good test case precisely because it is public and stubborn: seventeen transactions, one spend, sixteen years ago. If your dormancy screen calls it active, the screen is measuring the wrong thing. This is informational on-chain data only, not financial, investment, tax or legal advice.

Query the Bitcoin blockchain yourself

Pull balances, UTXOs, transactions, on-chain metrics and fund flows from the fully indexed Bitcoin blockchain by REST API, SQL and dashboards. Indexed since 2009, new blocks within seconds, no node to run.

Keep reading

More from the BitcoinDatabase blog

Data guides

Bitcoin Active Addresses: What the Metric Actually Counts

Active addresses does not count people, and it overstates them. We fetched all 4,329 transactions in block 963,218 on 19 August 2026 and counted them five ways: 12,388 naive unique addresses, but 11,760 of those appear exactly once, and merging addresses that co-spend gives 9,789 actors. One wallet consolidating dust contributed 285 of them while paying nobody.

Read
Data guides

How to Check Multiple Bitcoin Address Balances at Once

Free bulk checkers cap out at 20 to 50 addresses per request, which is fine for a few paper wallets and useless for a treasury. The four methods compared, why the caps exist, how xpub scanning and its gap limit work, and why no balance check ever needs a private key.

Read
Buyer guides

Best Bitcoin On-Chain Data API for Quant Research Teams

For research work the deciding factor is reproducibility, not metric count. Checked first-hand on 21 August 2026: Glassnode's 49 dollar Advanced plan does not include API access and its Professional tier has no published price, while coinmetrics.io now 301-redirects to Talos with pricing behind a demo request. Plus why a fixed adjustment factor for on-chain volume breaks: two blocks six days apart needed corrections of 17.03x and 4.87x.

Read
Engineering

How to Get Bitcoin Transaction Notifications Without Running a Node

Get real-time Bitcoin transaction notifications with a webhook API: subscribe an address, set a confirmation threshold, and receive a callback the moment it is paid. No node, no polling.

Read

Query the whole Bitcoin blockchain

BitcoinDatabase indexes the public Bitcoin blockchain block by block and returns balances, UTXOs, transactions, on-chain metrics and fund flows by REST API, SQL and dashboards, with no node to run.

REST + SQL + dashboards · indexed since 2009 · new blocks within seconds

Informational on-chain data only · not financial, investment or legal advice · AML features are compliance tooling to support your own review.