HomeSupply & Mining

How Bitcoin’s Difficulty Adjustment Works, Explained

Bitcoin’s network aims to add a block every ten minutes however many miners join or leave. It does this by changing how hard blocks are to find, roughly every two weeks. This explainer sets out the rule as written in Bitcoin Core’s code and tabulates the 16 most recent adjustments.

Data as of · adjustments through block 973,728 (Oct 29, 2026)

Illustration: the 16 most recent bitcoin difficulty adjustments, April 3 to October 29, 2026, with the rule behind them.
How Bitcoin’s Difficulty Adjustment Works, Explained, data as of 2026-11-09
Date (UTC) Block height Difficulty Change Direction
Oct 29, 2026 973,728 148.36 T ▲ +5.54% Rose
Oct 16, 2026 971,712 140.58 T ▲ +5.92% Rose
Oct 3, 2026 969,696 132.72 T ▼ −0.03% Fell
Sep 19, 2026 967,680 132.76 T ▲ +4.16% Rose
Sep 5, 2026 965,664 127.45 T ▲ +1.31% Rose
Aug 23, 2026 963,648 125.81 T ▼ −1.31% Fell
Aug 8, 2026 961,632 127.48 T ▲ +0.99% Rose
Jul 25, 2026 959,616 126.23 T ▼ −0.74% Fell
Jul 11, 2026 957,600 127.17 T ▼ −5.00% Fell
Jun 27, 2026 955,584 133.87 T ▲ +7.15% Rose
Jun 14, 2026 953,568 124.93 T ▼ −10.09% Fell
May 29, 2026 951,552 138.96 T ▲ +1.72% Rose
May 15, 2026 949,536 136.61 T ▲ +3.12% Rose
May 2, 2026 947,520 132.47 T ▼ −2.30% Fell
Apr 17, 2026 945,504 135.59 T ▼ −2.43% Fell
Apr 3, 2026 943,488 138.97 T ▲ +3.87% Rose

Date = when the adjustment block (the first block with the new difficulty) was mined, UTC. Difficulty is in trillions (T) as mempool.space reports it. Change = the new difficulty over the previous one, minus 1.3 Observed facts, not a forecast.

How it works

Target

The ten-minute target

Bitcoin’s rules aim for one new block every 10 minutes, set in the code as a target spacing of 600 seconds.2 Mining is the work of finding those blocks, and hashrate is the total computing power doing it. If more hashrate arrives, blocks would come faster than every 10 minutes unless something changes. That something is the difficulty adjustment.

Window

Every 2,016 blocks

The code changes difficulty only once per “adjustment interval”, which it defines as the two-week target timespan divided by the 10-minute spacing, or 2,016 blocks.2 The check in GetNextWorkRequired is that the next block’s height is an exact multiple of that interval; otherwise the previous difficulty carries over.1 Every block height in the table is a multiple of 2,016 (973,728 is 483 × 2,016).3

Formula

How the new difficulty is set

The code takes the time between the first and last blocks of the 2,016-block window and scales the old target by that time divided by two weeks.1 Difficulty moves opposite to the target: a larger target means lower difficulty. If the window took longer than two weeks, the target grows and difficulty falls; if it took less, the target shrinks and difficulty rises.1

Limit

The four-times limit

The measured time is clamped to between one quarter and four times the two-week target, so a single adjustment can at most multiply difficulty by 4 or cut it to a quarter.1 The 16 adjustments in the table are far inside that range, with changes between -10.09% and +7.15%.3

Table

What the last 16 adjustments show

Of the last 16 adjustments, 9 raised difficulty and 7 lowered it. The largest rise was June 27, 2026 (+7.15%) and the largest fall June 14, 2026 (-10.09%). The latest, at block 973,728 on October 29, 2026, set difficulty at 148.36 trillion.3

Limits

What the table cannot show

A change in difficulty records how long the previous 2,016 blocks took; it is set after the fact and does not measure hashrate on any given day. For related rankings, see the biggest difficulty increases, the biggest drops and hashrate growth by year. The table describes what happened and says nothing about what comes next.

Sources

  1. Bitcoin Core, src/pow.cpp (GetNextWorkRequired and CalculateNextWorkRequired), master branch, retrieved 2026-11-09.
  2. Bitcoin Core, src/kernel/chainparams.cpp: main-network consensus parameters nPowTargetTimespan = 14 days and nPowTargetSpacing = 10 minutes, and src/consensus/params.h: DifficultyAdjustmentInterval() = timespan ÷ spacing; retrieved 2026-11-09.
  3. mempool.space, API: difficulty adjustments (timestamp, block height, difficulty and change ratio of each adjustment), retrieved 2026-11-09.

For information only. Not financial advice. See the terms of use.