Block header, field by field

The 80 bytes that miners hash, decoded from a real block.

Step 13 of 144 min readUpdated October 5, 2026

Block 969,985, decoded#

The 80 bytes below are the header of block 969,985, as published. Each colour is a field; the table gives its position and its value once decoded. The button recomputes the hash in your browser.

header · 969985

00a02e36f3d9be8f988d0aac1b8f0580043850876fdbe0a425e101000000000000000000fd685d2141ba187d151a2aaa7fb8659af62490fd4c6059ab9aaac70b7d94aeb42268c36af01e021700389bb5

FieldBytesValue
Version0–30x362ea000
Previous block hash4–3500000000000000000001e125a4e0db6f8750380480058f1bac0a8d988fbed9f3
Merkle root36–67b4ae947d0bc7aa9aab59604cfd9024f69a65b87faa2a1a157d18ba41215d68fd
Timestamp68–711791191074 · 2026-10-05 09:04:34 UTC
Target (nbits)72–750x17021ef0
Nonce76–793,046,848,512
Verify on mempool.space ↗

What each field means#

FieldSizeMeaning
Version4 bytesRules the block follows; some bits are used to signal support for upgrades.
Previous block hash32 bytesLinks the block to the one before it. Changing an old block breaks this link.
Merkle root32 bytesSummary of all transactions. See the candidate block.
Timestamp4 bytesSeconds since 1 January 1970 (UTC). Must be later than the median of the 11 previous blocks.
nbits4 bytesThe target, in compact form.
Nonce4 bytesThe number miners change at each attempt. See the nonce.

Byte order#

Inside the header, numbers and hashes are stored in little-endian order: least significant byte first. That is why the previous block hash appears reversed in the raw bytes, and why the SHA-256d output is reversed before being displayed. Read in the displayed order, a valid block hash has its leading zeros in front.

Verify it yourself#

Do not take our word for it. With Python 3:

Python 3
import hashlib

header = bytes.fromhex(
    "00a02e36f3d9be8f988d0aac1b8f0580043850876fdbe0a425e101000000000000000000fd685d2141ba187d151a2aaa7fb8659af62490fd4c6059ab9aaac70b7d94aeb42268c36af01e021700389bb5"
)
digest = hashlib.sha256(hashlib.sha256(header).digest()).digest()
print(digest[::-1].hex())
# 000000000000000000006823c66adca44d6d8172d657bca08c3e83498ade8b1f

Or with Node.js:

Node.js
node -e 'const c=require("crypto");const h=Buffer.from("00a02e36f3d9be8f988d0aac1b8f0580043850876fdbe0a425e101000000000000000000fd685d2141ba187d151a2aaa7fb8659af62490fd4c6059ab9aaac70b7d94aeb42268c36af01e021700389bb5","hex");const d=c.createHash("sha256").update(c.createHash("sha256").update(h).digest()).digest();console.log(Buffer.from(d).reverse().toString("hex"))'

Both print the hash of block 969,985, which an explorer shows for that height.