Coin days destroyed (CDD) weights every bitcoin spent in a chosen time window (a day, for example) by how long it sat unspent. For each output spent in the window, you multiply its amount in BTC by its age in days and add up the results (Glassnode: CDD). A 2 BTC output that waited 30 days contributes 60 coin days. The same 2 BTC after three years of waiting contributes more than 2,000.
"Destroyed" is the misleading part. No bitcoin disappears. What gets wiped out is the age the output had built up: once it is spent, its clock stops, and the outputs created by the spending transaction start again at zero. CDD records how much of that stored-up age was used in a given window, which is a much narrower thing than the name suggests.
What is a coin day?
One bitcoin left unspent for one day accumulates one coin day. Half a bitcoin over the same day accumulates half a coin day, and 10 BTC left alone for a week build up 70. Since the unit is amount multiplied by time, it is often written as BTC-days, and that is the unit used throughout this guide.
When does an output start accumulating days?
Bitcoin doesn't track balances. It tracks unspent transaction outputs: each one is created by a transaction and stays put until a later transaction consumes it as an input (Bitcoin developer guide: transactions). The age that matters for CDD runs from that creation to that spend. The UTXO guide covers inputs, outputs and change in detail. For CDD, you only need the clock.
One consequence is easy to miss. An unspent output keeps adding days, but none of them appear in CDD yet. A coin that hasn't moved since 2013 contributes nothing to any daily value until the day it is spent. On that day it contributes its entire history at once.
What does "destroyed" mean?
When a transaction spends an output, that output is used up for good. The transaction creates new outputs in its place: one for the recipient and, usually, a change output that sends the remainder back to the sender, minus the fee (Bitcoin developer guide: transactions). The BTC carries over into those new outputs. Only the accumulated age is reset. Glassnode describes it the same way: when a coin is spent, its coin days go back to zero and are counted as destroyed (Glassnode: CDD).
How is Bitcoin CDD calculated?
For a single output, the contribution is its amount in BTC times its age in days at the moment it is spent. For a period, the metric adds up that product across every output spent within it (Glassnode: CDD):
CDD for a window = sum of (BTC amount of each spent output × its age in days)
That is the whole recipe. There is no price in it, no dollar value and no information about who held the coin. The result comes out in BTC-days.
A hypothetical example with two spent outputs
The figures below are invented to keep the arithmetic readable. They are not observed data. Suppose you look at one window and three outputs are relevant:
| Output | Amount | Age | Status in the window | Contribution |
|---|---|---|---|---|
| A | 2 BTC | 30 days | spent | 60 BTC-days |
| B | 0.5 BTC | 100 days | spent | 50 BTC-days |
| C | 5 BTC | 400 days | still unspent | 0 BTC-days |
CDD for the window is 60 + 50 = 110 BTC-days. Output C is the largest and oldest of the three, yet it adds nothing, because it didn't move. If it is spent a month later, at 430 days old, it will add 2,150 BTC-days to that later window in one go.
Why one large or old output matters
Multiplying amount by age means very different activity can produce the same number. A total of 1,000 BTC-days could be 1,000 BTC spent after one day, a single bitcoin spent after 1,000 days, or 200 outputs of 0.05 BTC that were each 100 days old. The daily figure looks identical in all three cases.
So a CDD value can't tell you how many transactions took place, how many people were involved or how much BTC changed hands. One dormant output from Bitcoin's early years can outweigh a full day of ordinary payments. That weighting is intentional. Glassnode calls CDD a measure of economic activity that gives more weight to coins left unspent for a long time (Glassnode: CDD). The trade-off is that a single transaction can dominate a day.
How should a CDD spike be read?
Daily windows and baselines
A CDD value only covers outputs spent inside its window. A daily value isn't comparable with a weekly sum, and two providers may not cut the day at the same hour. Before you put a figure next to anything else, note the window, the data source and the historical range you are comparing against.
A spike, read strictly, says one thing: more stored-up coin age was spent in that window than usual. That describes the past. It is not a price signal and not a timing rule. You will find commentary that treats spikes as a hint of what holders will do next, but the arithmetic doesn't carry that.
Transfers are not necessarily sales
Go back to output C, still hypothetical. Say its owner uses that 5 BTC output, now 430 days old, to pay a 0.1 BTC invoice. An output can only be spent as a whole, so all 2,150 BTC-days are destroyed, even though roughly 4.9 BTC come straight back as change, with an age of zero. About 98% of the CDD in that transaction comes from coins that never left their owner.
Self-transfers behave the same way. Moving funds from an old wallet to a new one, merging many small outputs into a single larger one or a custodian reorganizing its cold storage all spend old outputs. None of these requires a sale or a new owner. The blockchain records that outputs were spent. It doesn't record why, or whether the receiving address belongs to someone else. "Older or larger outputs were spent, or both" is what the data supports. "Long-term holders sold" is a claim it can't make on its own.
What changes with supply-adjusted CDD?
Raw CDD has a built-in drift. Early on, only a small amount of bitcoin had been issued, so there was little accumulated age that could be spent. As issuance grew, so did the pool of coin days across the network, and with it the floor that CDD tends to sit on. Glassnode notes that this rising floor makes it harder to compare readings from different periods (Glassnode: supply-adjusted CDD).
Its supply-adjusted variant divides CDD by the circulating supply, which Glassnode defines as the total amount of coins issued. The stated aim is a more proportional view across the market's history: a given number of BTC-days weighs more when a few million BTC exist than when several times that amount does. A small side effect of the division is that BTC-days divided by BTC leaves you with plain days, so the adjusted figure is no longer in BTC-days.
What normalization leaves alone is just as important. It rescales the number and does nothing else. A self-transfer still counts in full. Different day boundaries or data sources still produce different values. And supply-adjusted CDD is one provider's definition. Other sources may adjust differently or not at all, so check which variant a chart shows before comparing two of them.
How is CDD different from SOPR?
Both metrics start from the same material: outputs spent in a window. They ask different questions about it.
CDD multiplies amount by age, entirely in BTC and days. SOPR, as Glassnode defines it, divides the USD value of spent outputs at the time of spending by their USD value at creation (Glassnode: SOPR). It is a ratio of two dollar valuations. The SOPR guide explains that ratio and its pitfalls.
Because one metric ignores price and the other is built on it, they can easily diverge. An output spent after three years makes a large CDD contribution whether the price at spending is above, below or equal to the price at creation. Whether it pushes SOPR up or down depends only on that price relationship, not on its age. Old doesn't mean profitable, and a young output can move SOPR just as much as an old one of the same size. Read together, they show how much coin age was spent, with the size and the age of the moved outputs combined in one number, and how the dollar valuation of those outputs changed. Who moved them and why stays open.
What CDD cannot tell you
CDD can't identify holders, because it works on outputs and doesn't know who controls them. It can't separate a sale from a self-transfer, a payment or an exchange's internal housekeeping. It says nothing about realized gains, since price never enters the formula. And it doesn't forecast anything.
For the mechanics underneath, the UTXO guide explains how outputs are created and spent, and the guide on on-chain analysis basics places metrics like this one in a wider context. The Bitcoin page gives an overview of the asset itself. The CDD definitions discussed here come from the external sources linked above.
If you quote a CDD figure, quote its frame along with it: the window, the provider, and whether it is raw or supply-adjusted. Without that frame, a number in BTC-days is hard to place. With it, you have a fairly clean record of how much stored-up coin age was spent in a given period, weighted by amount, and that is the job the metric was built for.
Frequently asked questions
Does a rise in Bitcoin CDD mean long-term holders sold?
No. It means that older or larger outputs, or both, were spent in that window. Self-transfers, wallet consolidations and change outputs push CDD up exactly like a sale would. The metric records neither who spent the outputs nor why.
Can CDD increase even if Bitcoin's price does not change?
Yes. CDD is calculated from BTC amounts and output ages only, so the price never enters the formula. A flat price and a high CDD reading are fully compatible. Dollar valuations of spent outputs are what SOPR measures, as the SOPR guide explains.
What does supply-adjusted CDD change?
Glassnode's variant divides CDD by the issued supply of bitcoin, so readings from years with a smaller supply become easier to compare with recent ones. It does not filter out self-transfers, and it does not resolve differences in time windows or data sources between providers.
Notice: The examples in this guide are hypothetical and the sources are linked in the text. For information only, not financial advice.