Bitcoin UTXO Age Distribution Calculator
About This Tool
This calculator estimates the distribution of Bitcoin UTXOs by age. It divides UTXOs into time buckets and calculates what percentage of total UTXO value falls into each category.
Enter the total UTXO value (in BTC) and click "Calculate Distribution" to see the estimated age breakdown.
Distribution Visualization
Key Takeaways
- UTXO age distribution shows how long bitcoins stay untouched, revealing holder behavior.
- Analyzing age brackets helps miners, traders, and researchers gauge supply dynamics.
- Tools like blockchain explorers, query languages (e.g., Bitcoin Core RPC, Mempool.space API), and custom scripts are essential for accurate measurements.
- Common pitfalls include ignoring dust, misreading block timestamps, and overlooking chain re‑orgs.
- Future trends point to real‑time dashboards and AI‑driven predictions of market moves.
UTXO Age Distribution Analysis is a statistical examination of how long unspent transaction outputs (UTXOs) remain idle on a blockchain, typically Bitcoin. By grouping UTXOs into age buckets-seconds, minutes, hours, days, months, and years-analysts can spot trends such as long‑term holding ("HODLing"), rapid turnover, or the buildup of "dust" (tiny amounts that sit unused).
But why does this matter? In Bitcoin's design, every transaction consumes existing UTXOs and creates new ones. The age of a UTXO reflects the time since its last spend event. When many high‑value UTXOs sit for years, the effective circulating supply shrinks, potentially affecting price volatility. Conversely, a surge of fresh, low‑age UTXOs often signals active trading or market speculation.
What Exactly Is a UTXO?
UTXO (Unspent Transaction Output) is the fundamental accounting unit in Bitcoin. Each UTXO holds a specific amount of satoshis and points to a script that defines who can spend it. When a user sends Bitcoin, they consume one or more UTXOs and create new ones in the process.
Why Age Matters in the Bitcoin Ecosystem
Age adds a temporal dimension to the raw supply numbers. Several stakeholders rely on this insight:
- Miners can prioritize transactions that consolidate old, dust‑laden UTXOs, earning extra fees while cleaning the UTXO set.
- Traders watch for sudden shifts in age distribution as a proxy for market sentiment-young UTXOs may signal a buying frenzy.
- Researchers use age metrics to model Bitcoin’s economic model, including the "coin‑age" concept that once powered proof‑of‑stake proposals.
- Regulators may examine age patterns to identify potential laundering or illicit hoarding.
Core Data Sources for Age Analysis
Accurate age distribution starts with reliable data:
- Blockchain full node databases (e.g., Bitcoin Core). The node stores every UTXO with its creation block height and timestamp.
- Public block explorers (e.g., Mempool.space, Blockchair) expose REST APIs that return UTXO lists filtered by address or script type.
- Specialized analytics platforms (e.g., Glassnode, CryptoQuant) provide pre‑aggregated age histograms for quick consumption.
When pulling data directly from a node, the gettxoutsetinfo
RPC call gives the total number of UTXOs and the aggregate value, but not the age split. For age buckets, you need to query the utxo
table in the node’s LevelDB or use the txoutsetbyaddress
method available in newer releases.

Step‑by‑Step Methodology
Below is a practical workflow you can adapt with Python, Node, or even Bash. The goal is to produce a table showing the percentage of total UTXO value that falls into each age range.
- Connect to a fully synced Bitcoin Core node (or use a cloud RPC endpoint).
- Iterate over every UTXO entry. For each UTXO, retrieve:
- Creation block height (or block hash).
- Value in satoshis.
- Convert the creation block height to a timestamp. The Bitcoin block interval averages 10minutes, so
timestamp = genesis_timestamp + (height * 600)
works for rough estimates. - Calculate the age:
age_seconds = current_time - timestamp
. Then bucket the age:- 0‑1hour
- 1hour‑1day
- 1day‑1week
- 1week‑1month
- 1month‑1year
- >1year
- Accumulate the total satoshi value per bucket.
- At the end, compute each bucket’s share of the total UTXO value and optionally the share of total UTXO count.
Here’s a minimal Python snippet that illustrates steps 1‑4 using bitcoinrpc
:
from bitcoinrpc.authproxy import AuthServiceProxy
import time
rpc = AuthServiceProxy("http://user:[email protected]:8332")
current = int(time.time())
age_buckets = {"<1h":0, "1h‑1d":0, "1d‑1w":0, "1w‑1m":0, "1m‑1y":0, ">1y":0}
utxos = rpc.getrawmempool(True) # placeholder for actual UTXO set query
for txid, info in utxos.items():
height = info['height']
ts = rpc.getblockheader(height)['time']
age = current - ts
value = sum(vout['value'] for vout in info['vout'])
if age < 3600:
age_buckets["<1h"] += value
elif age < 86400:
age_buckets["1h‑1d"] += value
# … continue for other ranges …
print(age_buckets)
Replace the getrawmempool
call with a proper UTXO dump for production use.
Interpreting the Results
Once you have the percentages, look for these patterns:
- High % in >1year bucket - indicates strong long‑term holding. Historically, bitcoin’s price rallies have coincided with a rise in this bucket.
- Spike in 0‑1hour bucket - often a sign of market panic or a rapid arbitrage event. Flash crashes typically produce this shape.
- Large dust proportion (values <546sat) - suggests many abandoned addresses. Dust can clog the UTXO set, increasing node storage costs.
Combining age data with other metrics-like transaction fee rates or mempool size-creates a richer picture of network health.
Practical Use Cases
- Mining fee optimization: Miners can include transactions that spend old dust UTXOs, earning higher fees while reducing the overall UTXO set size.
- Portfolio risk assessment: Institutional investors may track the proportion of their holdings that sit in old UTXOs to gauge exposure to "locked" capital.
- Market sentiment dashboards: Real‑time age distribution charts appear on platforms like Glassnode, alerting traders to potential price moves.
- Regulatory monitoring: Age clustering helps identify addresses that receive large inflows and then quickly move funds-potential red flags for money‑laundering.
Common Pitfalls & How to Avoid Them
- Ignoring dust thresholds: Including sub‑dust UTXOs skews the age distribution because they rarely move. Filter out values below 546sat before analysis.
- Using block height for exact age: Block times vary; relying solely on height can introduce up to several hours of error. Pull the actual block timestamp whenever possible.
- Overlooking chain reorganizations: A re‑org can retroactively change the creation block of some UTXOs. Re‑run the analysis after a confirmed block depth of at least six.
- Not normalizing by total supply: Raw counts are less meaningful than value‑weighted percentages, especially when a few large UTXOs dominate the supply.

Future Directions
As blockchain analytics mature, we expect:
- Real‑time streaming pipelines that ingest new blocks and update age histograms within seconds.
- AI‑driven forecasts that predict how age distribution shifts will impact price volatility.
- Cross‑chain comparisons-applying the same methodology to Litecoin, Bitcoin Cash, or even UTXO‑based layer‑2 solutions.
These advances will make age analysis a standard part of any crypto‑dashboard.
Sample Age Distribution Table (2024 Snapshot)
Age Bucket | Value % | UTXO Count % |
---|---|---|
0‑1hour | 4.2% | 12.5% |
1hour‑1day | 7.8% | 15.3% |
1day‑1week | 10.1% | 18.0% |
1week‑1month | 12.6% | 20.7% |
1month‑1year | 22.9% | 22.1% |
>1year | 42.4% | 11.4% |
Notice how a relatively small share of UTXOs (<11%) holds almost half the total value-those are the "old‑money" holders.
Getting Started: Quick Checklist
- Run a full Bitcoin node or subscribe to a reliable UTXO‑API.
- Filter out dust (<546sat) before bucketing.
- Use block timestamps, not just heights, for accurate age.
- Normalize results by total value to compare across time.
- Automate the pipeline to update weekly or daily.
Bottom Line
UTXO age distribution isn’t just a nerdy statistic-it’s a window into who’s holding Bitcoin, for how long, and what that might mean for price and network health. By pulling reliable data, cleaning it, and visualizing the age buckets, anyone from a solo trader to a research institute can extract actionable insights.
Frequently Asked Questions
What does a high percentage of UTXOs older than one year indicate?
It generally points to long‑term holding, often called "HODLing." Large holders are keeping their coins out of circulation, which can tighten supply and potentially support higher prices.
Can I perform age analysis without running a full node?
Yes. Services like Glassnode, CryptoQuant, or public APIs from block explorers provide pre‑aggregated age histograms. However, they may limit granularity, so for custom buckets you’ll still need raw UTXO data.
Why should I exclude dust when calculating age distribution?
Dust UTXOs (<546sat) rarely move because spending them would cost more in fees than the value itself. Including them inflates the count of young UTXOs and distorts the true economic picture.
How often should I update the age distribution data?
Weekly updates capture most trends, but during high market activity (e.g., major rallies or crashes) a daily refresh can reveal short‑term shifts.
Is there a standard age‑bucket definition used across the industry?
No single standard exists, but most analysts use a mix of hourly, daily, weekly, monthly, and yearly brackets similar to the table above. Adjust the buckets to match your specific research question.
Comments