# Version information — how big symbols declare their size

> Version information exists only in QR versions 7 to 40: an 18-bit word made of 6 version bits plus 12 BCH(18,6) check bits, written twice — a 6×3 block above the bottom-left finder and a 3×6 block left of the top-right finder. Versions 1–6 rely on module counting instead.

Source: https://useqr.app/docs/spec/version-information · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## Only from version 7

QR versions 1–6 carry no version field at all. Their size is small enough that a decoder
can establish it by measuring: count the modules along the
[timing patterns](/docs/spec/timing-patterns), or divide the distance between finder
centres by the measured module pitch. At 21–41 modules per side, the difference between
adjacent versions (4 modules) is a large, safe fraction of the whole.

From **version 7 (45 × 45)** upward the arithmetic gets fragile — a small pitch
misestimate across a large symbol can land on the wrong version, and a wrong version means
a wrong sampling grid, wrong [alignment pattern](/docs/spec/alignment-patterns) positions
and wrong block structure. So versions 7–40 state their version explicitly, with heavy
protection.

## The 18-bit word

| Bits | Content |
|---|---|
| 6 | Version number, 7–40 in binary (000111 to 101000) |
| 12 | BCH(18,6) error-correction bits |

Unlike [format information](/docs/spec/format-information), no XOR mask is applied — the
version bits are never all zero, since the field only exists from version 7.

Worked example: version 7 is `000111`; the BCH remainder extends it to
**`000111110010010100`**. Version 8 encodes to `001000010110111100`. The BCH(18,6) code has
minimum distance 8, so a decoder can correct up to **3 bit errors** in each copy — and, as
with format bits, there are only 34 valid words, so exhaustive nearest-match against the
full list is a practical last resort.

## Where it lives

Written **twice**, in mirror-image positions:

- a **6 × 3 block** immediately above the bottom-left finder pattern,
- a **3 × 6 block** immediately left of the top-right finder pattern.

Both sit inside the corner regions a scanner has already located before it needs the
version, which is the point: the decoder reads finders, then version, then builds the
grid, then reads [format information](/glossary/format-information), then data.

## Why redundancy here matters

The version field is the decoder's declaration of geometry. Get it wrong by one and every
downstream structure shifts: the symbol claims a different module count, the alignment
grid lands in the wrong places, and the [codeword](/glossary/codeword) count changes. There
is no graceful degradation — it either matches reality or nothing decodes. Hence the same
defensive design as format bits: strong BCH, two copies, tiny valid-word space.

For designers the practical consequence is one more pair of keep-clear zones. Styling that
crowds the top-right or bottom-left finder on a **version 7+** code — large payloads,
[bulk-generated](/bulk) vCards, long URLs — risks bits that error correction in the data
region cannot help with. If your payloads are long enough to push past version 6, check
where they land with the [version and module table](/docs/reference/qr-code-version-and-module-table)
and [verify the styled output](/validate).

## FAQ

### What is version information in a QR code?
An 18-bit field present only in versions 7–40: six bits stating the version plus twelve BCH(18,6) check bits. It is written twice, above the bottom-left finder and left of the top-right finder, so the decoder knows the symbol size without measuring.

### Why do small QR codes not have version information?
Versions 1–6 are small enough that decoders determine the size reliably by counting timing-pattern modules. The explicit field only becomes necessary at version 7, where measurement error across a large symbol could land on the wrong size.

### How many errors can the version field survive?
Up to 3 bit errors per copy, thanks to the BCH(18,6) code's minimum distance of 8 — and there are two copies. Decoders can also compare a damaged read against all 34 valid version words and take the closest match.

### Can I tell a QR code's version by looking at it?
Yes — count the modules along one side and apply size = 4 × version + 17. A 25-module side is version 2; a 45-module side is version 7, the first version that also carries the explicit field.

## Try it

- https://useqr.app/url
- https://useqr.app/validate
- https://useqr.app/scan
