The size class of a QR code symbol, numbered 1 to 40, where each step adds 4 modules per side — Version 1 is 21×21 modules and Version 40 is 177×177.
Every QR code belongs to one of 40 versions, and the version number is simply a size class. Version 1 is the smallest symbol at 21×21 modules; each successive version adds 4 modules to each side, so Version 2 is 25×25, Version 3 is 29×29, and the largest, Version 40, is 177×177. The relationship is exact and linear: a Version V symbol measures 21 + 4(V − 1) modules per side. This is the first number a generator decides (usually automatically) once it knows your data length and error correction level.
Version determines data capacity
Data capacity grows roughly quadratically with version, because capacity scales with symbol area while functional patterns consume a shrinking fraction of it. At Error Correction Level L, a Version 1 symbol holds 41 numeric digits, 25 alphanumeric characters, or 17 bytes; a Version 40 symbol at the same level holds 7,089 numeric digits, 4,296 alphanumeric characters, or 2,953 bytes. Raising the error correction level trades capacity for resilience: the same Version 40 symbol at Level H holds far fewer data codewords because more of its area is devoted to parity. The practical consequence is that a generator choosing a version is really solving a small optimization problem — find the smallest version whose data region, after subtracting functional patterns and parity codewords, fits the payload.
Version information blocks
Versions 1 through 6 carry no explicit version marking; the decoder infers the version from the timing pattern and finder geometry. Versions 7 and above add dedicated version information: an 18-bit pattern (6 data bits protected by a BCH error-correcting code) placed in two 6×3 module blocks near the top-right and bottom-left finders. This explicit marking exists because at large symbol sizes, inferring the version from geometry alone becomes error-prone, particularly under perspective distortion. If you ever need to identify a code's version by eye, count the modules along one edge and apply the size formula — or look for the version information blocks flanking the finders.
How generators select a version
Quality QR generators select the minimal version automatically: they encode the payload, compute the required data codewords at the chosen error correction level, and pick the smallest version whose capacity covers it. Manual version selection is occasionally useful — for example, pinning a version so that a batch of codes shares identical geometry for a fixed-size print template — but overriding the automatic choice upward only makes the symbol denser than necessary, which hurts scannability. Overriding it downward produces an unencodable payload and a generator error.
Version and physical print size
Version interacts directly with print sizing. A Version 10 symbol (57 modules per side) printed at 0.5 mm per module is 28.5 mm wide before the quiet zone; the same symbol at 0.25 mm per module is 14.25 mm but approaches the reliability floor for phone cameras. Long URLs at high error correction levels can easily push a code into the Version 10–15 range, which is why shortening the encoded URL (or using a dynamic QR code) is the most effective way to keep printed symbols small and scannable.
Diagram description: Scale comparison of Version 1, 10, 25, and 40 symbols at identical module size, with the size formula annotated and version information block locations highlighted on the Version 10 example.
