The current Bitcoin Hash Ribbons reading (October 18, 2026) shows no miner capitulation: the 30-day average hashrate (982 EH/s) is above the 60-day average (953 EH/s).
When mining stops paying, the highest-cost miners switch off and network hashrate drops. Hash Ribbons track that by comparing the 30-day average of hashrate with the 60-day average: one crossing marks the start of a capitulation, the next one its end. We compute them from a daily hashrate estimate built from our own node's block headers.
“Bitcoin Hash Ribbons on 18 Oct 2026: no miner capitulation, with the 30-day average hashrate at 982 EH/s and the 60-day average at 953 EH/s.” NodeWitness, https://nodewitness.com/en/charts/bitcoin-hash-ribbons-chart/
The grey line is each day's hashrate, and it's meant to look jagged: it depends on how many blocks happened to be found that day, which swings a lot on luck alone. The 30- and 60-day averages are what the indicator reads.
Focus on the two thick lines: orange is the 30-day average of hashrate, blue the 60-day. While orange runs above blue, mining power is growing or holding. When orange slips under, hashrate has been falling for weeks. That is a miner capitulation, shaded red on the chart. It usually follows a price drop, a halving that cuts the block reward in half, or a jump in power costs for part of the industry.
The shaded stretch ends when orange crosses back above blue: the surviving miners are covering costs and hashpower is returning. The original method then waits for one more thing, the 10-day average of price moving above the 20-day, and that day gets the dashed green line. The grey line underneath is the raw daily figure, and it shouldn’t be read alone: a day with few blocks doesn’t mean anyone left.
Charles Edwards of Capriole Investments published the indicator in 2019. Lining up hashrate averages against price, he found that the end of miner capitulations had tended to sit close to price lows. The worst date in his comparison was January 2015, and he proposed the price filter to screen out cases like it. It has since become one of the most cited on-chain metrics.
Most public versions take daily hashrate from a data vendor. Ours estimates it from our own node’s block headers, using the same method across the whole series.
One row per drop of the 30-day average below the 60-day and its return above it, plus the original method's signal when it fired before the next capitulation. The table is computed from the chart's own series on every page load. Crossings that last only a few days are listed too; the standard definition doesn't filter them out.
Our node gives us every block header since 2009, with its timestamp and the difficulty in force. Each block is counted on the UTC day of its timestamp, and that day's hashrate is the sum of its blocks' difficulty times 2³², divided by the 86,400 seconds in a day [1]. That equals blocks per day × difficulty × 2³² / 86,400, and it also handles the day a difficulty adjustment lands. No external API is involved in the hashrate.
From that daily series we take 30- and 60-day simple moving averages and look for crossings, as in the original definition [2]. The original method's signal uses 10- and 20-day averages of the daily closing price, from our Blockchain.com price series [3]. A missing day restarts the averages instead of averaging across the gap, and today only shows up once no more blocks can carry today's date.
Daily hashrate is an estimate, not a measurement. The number of blocks found in a day is partly luck: around an average of 144, days with 130 or 160 are routine with nothing changing on the network, and that alone moves the daily figure by about 8% either way. Block timestamps are also set by the miners themselves and can be off by a couple of hours. Hence the jagged grey line, and hence the 30- and 60-day averages. We checked our series against two public references since 2020. It matches Blockchain.com [4] on 2,452 of 2,476 days; on the rest the gap is under 1%, from a block landing on the neighboring day. Against mempool.space [5], which uses a different method, the median gap is 0.5% per day and 0.3% on the 30-day average.
Short crossings aren't filtered out by the standard definition, and we don't filter them either: sometimes the 30-day average dips under the 60-day for a few days and climbs back. The method lining up with past price lows tells you nothing about what comes next. This page describes the series; it isn't investment advice.
Hashrate and difficulty at every adjustment since 2009 are on our hashrate and difficulty chart. Miner revenue is summed up by the Puell Multiple chart, and how this fits with the other capitulation checks is covered in the capitulation signals you can verify on-chain.
A stretch when some miners stop mining because revenue no longer covers power and hardware. As machines go dark, network hashrate falls, and some of those miners sell coins to stay afloat. In Hash Ribbons terms it starts when the 30-day average of hashrate drops below the 60-day.
Because it isn’t measured; it’s inferred from how many blocks were found that day and the difficulty. With 144 blocks a day on average, chance alone can give you 130 one day and 160 the next with nothing changing on the network. That’s why the indicator reads 30- and 60-day averages.
Its author called it that, and it has lined up with several past price lows. It only describes how hashrate and price have moved, though, and says nothing about what happens next. We show it as historical data, not as investment advice.
The rest of the network, mining and fee data lives on the Network page.