· 13 min read

QR Code Versions 1-40: What the Version Number Actually Changes

A QR code version is not a release number. It is one of forty fixed grid sizes, from 21x21 modules up to 177x177, and you almost never choose it yourself - your content length and your error-correction level choose it for you. Here is the complete table, the arithmetic that connects a version to a printed module size, and why pushing a code from level L to level H costs about 1.5x more modules along every edge.

Somebody tells you the artwork needs a "version 3 QR code", or a printer rejects a file because the symbol is "version 24 and too dense for the stock". The word version is doing something unfamiliar here. It is not a release number, nothing has been upgraded, and there is no version 41 coming.

A QR code version is a size. That is the whole concept. There are forty of them, they are numbered 1 to 40, and each one is a fixed grid of black and white squares — 21 across at version 1, 177 across at version 40. The number tells you how many squares, and nothing else.

Which leaves the question that actually brings people here: you did not choose a version, so why does your code have one, and what is it costing you? That is what this page is about. The full table is below, but the part worth reading is what sits after it — the version your data lands in is decided by two things you do control, and getting them wrong is the most common reason a printed QR code comes out too dense to scan.

The Short Answer

  • A version is a grid size, not a release. Version 1 is 21×21 modules; version 40 is 177×177. The formula is exact: modules per side = (version × 4) + 17.
  • There are 40 versions, and each step adds 4 modules per side. Version 2 is 25×25, version 3 is 29×29, and so on in fours.
  • You almost never pick the version. Your generator picks the smallest one that fits your data at your chosen error-correction level. The version is an output, not an input.
  • Two things drive it up: more data, and higher error correction. Those are the levers you actually hold.
  • Error correction is expensive in versions. At the same version, level H holds only about 41–45% of what level L holds. Push a 78-byte URL from L to H and the symbol goes from 33×33 to 49×49 — about 1.5× more modules along each edge, each one 1.5× smaller at the same printed size.
  • A higher version is not better. At a fixed printed size, a higher version means smaller modules, and smaller modules are harder for a camera to resolve. Lower is almost always better.

What a Version Actually Is

QR codes are defined in ISO/IEC 18004. The standard describes forty symbol sizes for the modern form of the code — Model 2, the one essentially everything uses today — and calls them versions 1 through 40.

Each version is a square grid of modules, the individual light and dark cells. The relationship between the version number and the grid is fixed arithmetic:

modules per side = (version × 4) + 17

So version 1 is 21×21, version 2 is 25×25, version 3 is 29×29, and the pattern continues in steps of four to version 40 at 177×177. There is no gap, no irregular jump, and no version 0.

Not all of that grid carries your data. Every QR code spends modules on the three big finder squares in the corners, the alignment patterns, the timing lines, and the format and version information blocks. The rest is split between your data and the error-correction codewords. This is why capacity does not scale neatly with area: a version 40 symbol has about 71× the modules of a version 1, but carries roughly 174× the bytes, because the fixed overhead stops mattering as the grid grows.

One more thing the version does not include: the quiet zone. ISO/IEC 18004 requires four modules of clear margin on every side. Those sixteen module-widths of empty space are part of the footprint you have to find room for, even though no version number accounts for them. If you are laying out a label, the space you need is the grid plus eight modules in each dimension.

The Complete Version Table, 1 to 40

Capacity depends on how your content is encoded. QR codes have separate modes for digits only, for a restricted uppercase alphanumeric set, and for arbitrary bytes. The table below shows byte mode, because that is what a URL, a vCard or any mixed-case text actually uses — and it is the number most people need. Digits-only content holds roughly 2.4× more; the restricted alphanumeric set holds about 1.45× more.

Maximum byte-mode capacity for QR code versions 1 to 40 at each error-correction level
VersionGrid (modules)LMQH
1 21×21 17 14 11 7
2 25×25 32 26 20 14
3 29×29 53 42 32 24
4 33×33 78 62 46 34
5 37×37 106 84 60 44
6 41×41 134 106 74 58
7 45×45 154 122 86 64
8 49×49 192 152 108 84
9 53×53 230 180 130 98
10 57×57 271 213 151 119
11 61×61 321 251 177 137
12 65×65 367 287 203 155
13 69×69 425 331 241 177
14 73×73 458 362 258 194
15 77×77 520 412 292 220
16 81×81 586 450 322 250
17 85×85 644 504 364 280
18 89×89 718 560 394 310
19 93×93 792 624 442 338
20 97×97 858 666 482 382
21 101×101 929 711 509 403
22 105×105 1,003 779 565 439
23 109×109 1,091 857 611 461
24 113×113 1,171 911 661 511
25 117×117 1,273 997 715 535
26 121×121 1,367 1,059 751 593
27 125×125 1,465 1,125 805 625
28 129×129 1,528 1,190 868 658
29 133×133 1,628 1,264 908 698
30 137×137 1,732 1,370 982 742
31 141×141 1,840 1,452 1,030 790
32 145×145 1,952 1,538 1,112 842
33 149×149 2,068 1,628 1,168 898
34 153×153 2,188 1,722 1,228 958
35 157×157 2,303 1,809 1,283 983
36 161×161 2,431 1,911 1,351 1,051
37 165×165 2,563 1,989 1,423 1,093
38 169×169 2,699 2,099 1,499 1,139
39 173×173 2,809 2,213 1,579 1,219
40 177×177 2,953 2,331 1,663 1,273

Figures are maximum characters in byte mode at each error-correction level, from the capacity tables in ISO/IEC 18004. These are the same numbers that drive our QR code capacity calculator, which will also show you the numeric and alphanumeric columns and tell you which version a specific payload lands in.

Which Version Will Your Generator Pick?

Here is the part the specification tables do not make obvious. You hand a generator some content and an error-correction level; it walks the table from version 1 upward and stops at the first version that fits. That is the entire selection algorithm.

Which means the version you end up with is a consequence of two decisions. Here is what the same payload sizes land on at each level:

Version selected for common payload sizes at each error-correction level
ContentBytesLMQH
A six-digit coupon code 6 1 1 1 1
A short link such as example.com/x7k 20 2 2 2 3
A typical shortened URL 25 2 2 3 4
A plain https:// URL with one path segment 54 4 4 5 6
A URL with a short UTM string 78 4 5 7 8
A URL with a full UTM set 120 6 7 9 11
A minimal vCard 300 11 13 16 18
A vCard with address, photo URL and notes 1000 22 26 31 36

Read along any row and the pattern is consistent: raising error correction on the same content pushes you up the version ladder. A 120-byte URL with a full UTM string is a version 6 symbol at level L and a version 11 symbol at level H. Same link, same information, 41×41 modules against 61×61.

This is also why shortening a URL does more than it looks like it should. Trimming a 120-byte tracked link down to a 54-byte clean one takes you from version 6 to version 4 at level L — a 41×41 grid down to 33×33. At a fixed printed width, every module just got about a quarter wider, which is exactly the margin that decides whether a camera locks on at arm's length. If you need the tracking, there are ways to keep it without carrying the parameters inside the symbol.

What Error Correction Costs You — in Versions, Not Percentages

Error correction is usually explained as a percentage: levels L, M, Q and H recover roughly 7%, 15%, 25% and 30% of the symbol's codewords. That is accurate, and it is also the least useful way to think about it, for two reasons.

The first is that those percentages count codewords — the eight-module units the data is stored in — not the proportion of the picture you may obscure. Because damaging a single module writes off its entire codeword, a logo or a scuff always costs more than its footprint suggests. (That specific trade-off is worth its own page: see how big a logo a QR code can actually take.)

The second is that the percentage hides the real bill. The cost of error correction is not paid in abstract redundancy; it is paid in modules. At any given version, level H holds roughly 41–45% of what level L holds, so the same content needs a bigger grid:

The version and grid penalty for choosing level H over level L for the same payload
BytesAt level LAt level HModules per edge
54 Version 4 — 33×33 Version 6 — 41×41 1.24×
78 Version 4 — 33×33 Version 8 — 49×49 1.48×
120 Version 6 — 41×41 Version 11 — 61×61 1.49×
300 Version 11 — 61×61 Version 18 — 89×89 1.46×
1000 Version 22 — 105×105 Version 36 — 161×161 1.53×

Choosing H over L for the same content costs between 1.25× and 1.5× more modules along each edge across that range — gentlest on short payloads that only cross one or two version boundaries, steepest on long ones. If the printed size is fixed — a label, a menu corner, a pallet tag — then each module shrinks by the same factor, and you have bought damage tolerance by making every cell harder to resolve.

That is not an argument against level H. It is an argument for deciding deliberately. Level H earns its cost on a code that will be scuffed, printed on a curved surface, or carrying a logo. It is close to wasted on a code that lives on a screen or inside a laminated menu, where level M is plenty and the modules stay twice as legible.

Version and Printed Size: the Connection Nobody Makes

Almost every page about QR code versions stops at the capacity table, which leaves out the thing that decides whether your code works. A version number on its own tells you nothing about scannability. The number that matters is the module width — how wide one cell is once printed, usually written as the X-dimension.

It follows directly from the version:

module width = printed symbol width ÷ ((version × 4) + 17)

Work an example. You have a 25 mm square on a label. At version 4 (33×33) each module is about 0.76 mm. Put the same 25 mm aside for a version 11 symbol (61×61) and each module is about 0.41 mm. The second one is near the floor of what a phone camera resolves comfortably, and the GS1 General Specifications put 0.396 mm as the minimum X-dimension for QR codes read at retail point of sale. The first has room to spare.

So the practical chain runs: content length and error-correction level decide the version; the version and your printed width decide the module size; the module size decides whether it scans. The version number in the middle is the part people fixate on, and it is the only link in that chain you do not set directly.

Our QR code print size calculator runs that arithmetic in both directions — give it a version and a width and it returns the module size, or give it a scan distance and it returns the width you need. For the broader question of how small any symbology can go before it stops working, how big a barcode needs to be covers linear formats too.

Version Is Not Model, and It Is Not Micro QR

Three different numbering schemes get confused with each other, and the confusion is worth clearing up because it changes what you are looking at.

Model 1 and Model 2 are generations of the symbology itself. Model 1 was the original 1994 design from Denso Wave; Model 2 added the alignment patterns that let large symbols stay readable and is what every current generator and scanner produces. Versions 1–40 are Model 2 sizes. If someone says "model 2 version 7", those are two different facts about one symbol.

Micro QR is a separate, smaller symbology with its own four sizes, numbered M1 to M4 — 11×11 up to 17×17 modules, with a single finder pattern instead of three. A Micro QR code is not a version 0 QR code; it is a different symbol type, and not every scanner reads it.

Static versus dynamic has nothing to do with versions at all, though the vocabulary invites the mix-up. That distinction is about whether the encoded data is your destination or a redirect you can repoint later — see static versus dynamic QR codes. Both are ordinary Model 2 symbols, and a dynamic code is usually a lower version, because a short redirect URL is less data than the destination it stands in for.

When the Version Number Actually Matters to You

Most of the time you can ignore it entirely and let the generator choose. Four situations are the exception.

You have a fixed printed size and the code will not scan. This is the common one. Work out the version from your content, divide your printed width by the module count, and compare the result against the floor. If the module width is the problem, the fix is less data or lower error correction — not a bigger print run.

A print supplier specifies a maximum version. Some label and direct-part-marking processes cannot hold fine detail, so the spec arrives as a version ceiling. That is really a module-size constraint in disguise, and it caps how much data you can carry.

You are generating codes in bulk and they come out inconsistent. If one batch of codes is visibly denser than another, the payloads differ in length enough to cross a version boundary. Padding every payload to a fixed length produces a uniform set — useful when they all have to sit in the same template. Generating QR codes in bulk goes into this.

You are debugging a code that reads on one device and not another. High versions are where scanner quality starts to separate. A version 30-plus symbol has fine detail and demands a sharper image; a cheap fixed-mount reader may fail where a phone succeeds, or the reverse. If you need to know what version you are actually dealing with, decode it and look — our QR code payload decoder reads the symbol in your browser and reports what it found, including the content that determined the size.

Frequently Asked Questions

How many QR code versions are there?

Forty, numbered 1 to 40, defined in ISO/IEC 18004 for Model 2 QR codes. Version 1 is a 21×21 module grid and version 40 is 177×177. Micro QR is a separate symbology with four of its own sizes, M1 to M4, which are not part of the 1–40 range.

What is the formula for QR code size from the version number?

Modules per side equals the version number times four, plus seventeen. Version 1 gives 21, version 10 gives 57, version 40 gives 177. The result is the module grid only; add four modules of quiet zone on each side to get the full printed footprint.

How much data does a version 3 QR code hold?

At byte-mode encoding, a version 3 symbol (29×29 modules) holds 53 characters at error-correction level L, 42 at M, 32 at Q and 24 at H. Digits-only content holds considerably more — 127 at level L. The error-correction level matters as much as the version, which is why a single capacity figure for "version 3" is always incomplete.

What is the maximum data a QR code can hold?

A version 40 symbol at error-correction level L holds 7,089 numeric digits, 4,296 alphanumeric characters, or 2,953 bytes. Those are theoretical ceilings. In practice a version 40 code is 177 modules across and needs to be printed large and sharp to scan reliably, so very few real-world codes go anywhere near it.

Can I choose the QR code version myself?

Some generators and most libraries let you set a minimum version, and the encoder will use that size or larger. You cannot force a version smaller than your data needs — the content has to fit. Forcing a version higher than necessary is occasionally useful for making a set of codes look uniform, but it costs module size for no benefit otherwise.

Does a higher QR code version scan better?

No, generally the opposite. At a fixed printed size, a higher version divides the same area into more and therefore smaller modules, and smaller modules are harder for a camera to resolve. A higher version only helps in the sense that it carries more data. For reliability, aim for the lowest version your content allows.

Why did my QR code get bigger when I added a logo?

Adding a logo usually means raising the error-correction level to level H so the symbol can survive the obscured area. Level H holds roughly 41–45% of what level L holds at the same version, so the same content no longer fits and the encoder steps up to a larger version. The logo did not make the code bigger; the error correction you added for it did.

How do I find out what version an existing QR code is?

Count the modules along one edge and reverse the formula: subtract 17 and divide by 4. A 57-module edge is version 10. If counting is impractical, decoding the symbol tells you its content length, which determines the version together with the error-correction level the encoder used.

Find Your Version Without Counting Modules

Paste your content, pick an error-correction level, and the capacity calculator returns the version it lands in, the grid size, and how much headroom is left before it steps up. It also shows the full 40-version table for numeric and alphanumeric encoding. Everything runs in your browser.

Check the Printed Code, Not the Arithmetic

The module-size calculation tells you whether a version should scan at your printed size. Only a camera tells you whether it does. Scan & Generate reads dense high-version symbols from your phone, shows the decoded payload so you can confirm it against what you encoded, and keeps a scan history you can export.