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
| Field | Bytes | Value |
|---|---|---|
| Version | 0–3 | 0x362ea000 |
| Previous block hash | 4–35 | 00000000000000000001e125a4e0db6f8750380480058f1bac0a8d988fbed9f3 |
| Merkle root | 36–67 | b4ae947d0bc7aa9aab59604cfd9024f69a65b87faa2a1a157d18ba41215d68fd |
| Timestamp | 68–71 | 1791191074 · 2026-10-05 09:04:34 UTC |
| Target (nbits) | 72–75 | 0x17021ef0 |
| Nonce | 76–79 | 3,046,848,512 |
What each field means#
| Field | Size | Meaning |
|---|---|---|
| Version | 4 bytes | Rules the block follows; some bits are used to signal support for upgrades. |
| Previous block hash | 32 bytes | Links the block to the one before it. Changing an old block breaks this link. |
| Merkle root | 32 bytes | Summary of all transactions. See the candidate block. |
| Timestamp | 4 bytes | Seconds since 1 January 1970 (UTC). Must be later than the median of the 11 previous blocks. |
| nbits | 4 bytes | The target, in compact form. |
| Nonce | 4 bytes | The 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:
import hashlib
header = bytes.fromhex(
"00a02e36f3d9be8f988d0aac1b8f0580043850876fdbe0a425e101000000000000000000fd685d2141ba187d151a2aaa7fb8659af62490fd4c6059ab9aaac70b7d94aeb42268c36af01e021700389bb5"
)
digest = hashlib.sha256(hashlib.sha256(header).digest()).digest()
print(digest[::-1].hex())
# 000000000000000000006823c66adca44d6d8172d657bca08c3e83498ade8b1fOr with 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.