Bitcoin HODL waves
Every UTXO in the current set, bucketed by age and summed by BTC value. Reveals what fraction of supply has moved recently vs sat dormant for months, years, or longer. The "old supply" share has historically been a leading indicator of market structure: long-term holders accumulating vs distributing.
Current age distribution
| Age | BTC | % of supply | Share |
|---|---|---|---|
| 24h | 100,214.37 | 0.50% | |
| 1d-1w | 512,387.16 | 2.56% | |
| 1w-1m | 536,734.53 | 2.68% | |
| 1m-3m | 1,263,546.80 | 6.31% | |
| 3m-6m | 1,827,008.74 | 9.12% | |
| 6m-1y | 3,639,880.15 | 18.17% | |
| 1y-2y | 2,433,554.72 | 12.15% | |
| 2y-3y | 1,099,237.11 | 5.49% | |
| 3y-5y | 1,933,054.15 | 9.65% | |
| 5y-7y | 1,458,465.03 | 7.28% | |
| 7y-10y | 1,657,951.32 | 8.27% | |
| 10y+ | 3,574,635.81 | 17.84% |
Visualizing the distribution
Same data as the table, plotted as a horizontal bar chart so age buckets line up vertically with their relative BTC weight.
HODL waves over time
Each weekly snapshot stacked as an area chart. We started snapshotting on 2026-05-14; this view accumulates one row per Sunday going forward.
Coming soon
HODL waves data + signals
HODL waves is the standard reference for "how much of the supply is in strong hands?" The data is on-chain — every UTXO's age is deterministic from transaction history, no third-party trust required — but most providers still paywall the full series. We're shipping it as a first-class product.
- Live + historical HODL waves API. Current age distribution and the full weekly series, bearer-gated JSON, schema-versioned envelope.
- Long-term-holder supply signal. State classification on the 1y+ supply share with webhook alerts when it crosses bands — the metric cycle analysts watch most closely.
- Old-coin movement webhooks. Fires the moment any >5y or >10y UTXO confirms a spend, with attribution baked into the payload.
Early access: [email protected].
Methodology
- Each Sunday at 06:00 UTC,
build_rich_list.pywalks our bitcoinddumptxoutsetsnapshot (every current UTXO). - For each UTXO we read its creation block height directly from the
snapshot, compute
age_blocks = snapshot_height - utxo_height, and convert to days via 144 blocks/day. - UTXOs are bucketed into 12 age ranges (the standard Unchained / lookintobitcoin HODL Wave layout: 24h, 1d-1w, 1w-1m, 1m-3m, 3m-6m, 6m-1y, 1y-2y, 2y-3y, 3y-5y, 5y-7y, 7y-10y, 10y+).
- Each bucket gets the sum of BTC value across all UTXOs in its range.
- Snapshots persist forever in
hodl_wave_snapshots; the time-series chart accumulates one row per Sunday. - Same pass as the rich list and distribution histogram. One walk, three outputs.