Glossary | Target


The target is the threshold that a blockhash must be under for a candidate block to be added to the blockchain.


The current target is:


So if you want to add a candidate block to the blockchain, you must get one with a blockhash that is below this value.

Where does the target come from?

The target originally started out at:


This target was set so that it would take 10 minutes to mine a block. Or in other words, that it would take an average of 10 minutes to find a block hash (number) below this value.

However, as miners get faster at hashing and are able to mine blocks more quickly, the target adjusts (up and down) to try and keep the time between blocks at 10 minutes intervals.

This original target value is also the highest possible value for the target.

You can see the original target value by looking at the bits field of the genesis block

When does the target move?

The target adjusts every 2016 blocks (roughly every 2 weeks).

  • If blocks have been mined in less than 10 minutes (on average) over the last 2016 blocks, the target moves lower.
  • If blocks have been mined in more than 10 minutes (on average) over the last 2016 blocks, the target moves higher.

So before every 2016th block, each node will look at the average time it took to mine the last 2016 blocks, and move the target up or down based on that.


1. What has the target got to do with the difficulty?

The difficulty shows the change in the target from it's original value.

 difficulty = original_target / target

So if we work out the current difficulty:

difficulty = 0x00000000ffff0000000000000000000000000000000000000000000000000000 / 0x0000000000000000018b7e000000000000000000000000000000000000000000
           = 711697198173.76

Which is like saying: "it's currently 711,697,198,174 times more difficult to mine a block today than it was when bitcoin started."

The difficulty value is not used internally in bitcoin. It's just a useful metric that helps you compare the changes in the height of the target.

2. What has the target got to do with "bits"?

The bits field is a compact way of storing the target in the block header.


See also: