Reference tables
QR error correction capacity table: data vs EC codewords
Every QR version has a fixed codeword budget split between data and error correction. Version 1 has 26 codewords, 19 data and 7 error correction at level L, but 9 and 17 at level H. Version 40 ranges from 2,956 data codewords at L to 1,276 at H. The table lists all forty versions.
How to read the table
A codeword is 8 bits. Each version has a fixed total (version 1 always carries 26 codewords, version 40 always 3,706), and the error-correction level decides how that total is split between data and Reed–Solomon redundancy. Cells below are data / EC.
These values were extracted from the RS block table of the encoder UseQR itself uses, which implements the error-correction characteristics table of ISO/IEC 18004. They are pulled from running code, not transcribed from a blog.
All forty versions
| Version | Total | L (data / EC) | M (data / EC) | Q (data / EC) | H (data / EC) |
|---|---|---|---|---|---|
| 1 | 26 | 19 / 7 | 16 / 10 | 13 / 13 | 9 / 17 |
| 2 | 44 | 34 / 10 | 28 / 16 | 22 / 22 | 16 / 28 |
| 3 | 70 | 55 / 15 | 44 / 26 | 34 / 36 | 26 / 44 |
| 4 | 100 | 80 / 20 | 64 / 36 | 48 / 52 | 36 / 64 |
| 5 | 134 | 108 / 26 | 86 / 48 | 62 / 72 | 46 / 88 |
| 6 | 172 | 136 / 36 | 108 / 64 | 76 / 96 | 60 / 112 |
| 7 | 196 | 156 / 40 | 124 / 72 | 88 / 108 | 66 / 130 |
| 8 | 242 | 194 / 48 | 154 / 88 | 110 / 132 | 86 / 156 |
| 9 | 292 | 232 / 60 | 182 / 110 | 132 / 160 | 100 / 192 |
| 10 | 346 | 274 / 72 | 216 / 130 | 154 / 192 | 122 / 224 |
| 11 | 404 | 324 / 80 | 254 / 150 | 180 / 224 | 140 / 264 |
| 12 | 466 | 370 / 96 | 290 / 176 | 206 / 260 | 158 / 308 |
| 13 | 532 | 428 / 104 | 334 / 198 | 244 / 288 | 180 / 352 |
| 14 | 581 | 461 / 120 | 365 / 216 | 261 / 320 | 197 / 384 |
| 15 | 655 | 523 / 132 | 415 / 240 | 295 / 360 | 223 / 432 |
| 16 | 733 | 589 / 144 | 453 / 280 | 325 / 408 | 253 / 480 |
| 17 | 815 | 647 / 168 | 507 / 308 | 367 / 448 | 283 / 532 |
| 18 | 901 | 721 / 180 | 563 / 338 | 397 / 504 | 313 / 588 |
| 19 | 991 | 795 / 196 | 627 / 364 | 445 / 546 | 341 / 650 |
| 20 | 1085 | 861 / 224 | 669 / 416 | 485 / 600 | 385 / 700 |
| 21 | 1156 | 932 / 224 | 714 / 442 | 512 / 644 | 406 / 750 |
| 22 | 1258 | 1006 / 252 | 782 / 476 | 568 / 690 | 442 / 816 |
| 23 | 1364 | 1094 / 270 | 860 / 504 | 614 / 750 | 464 / 900 |
| 24 | 1474 | 1174 / 300 | 914 / 560 | 664 / 810 | 514 / 960 |
| 25 | 1588 | 1276 / 312 | 1000 / 588 | 718 / 870 | 538 / 1050 |
| 26 | 1706 | 1370 / 336 | 1062 / 644 | 754 / 952 | 596 / 1110 |
| 27 | 1828 | 1468 / 360 | 1128 / 700 | 808 / 1020 | 628 / 1200 |
| 28 | 1921 | 1531 / 390 | 1193 / 728 | 871 / 1050 | 661 / 1260 |
| 29 | 2051 | 1631 / 420 | 1267 / 784 | 911 / 1140 | 701 / 1350 |
| 30 | 2185 | 1735 / 450 | 1373 / 812 | 985 / 1200 | 745 / 1440 |
| 31 | 2323 | 1843 / 480 | 1455 / 868 | 1033 / 1290 | 793 / 1530 |
| 32 | 2465 | 1955 / 510 | 1541 / 924 | 1115 / 1350 | 845 / 1620 |
| 33 | 2611 | 2071 / 540 | 1631 / 980 | 1171 / 1440 | 901 / 1710 |
| 34 | 2761 | 2191 / 570 | 1725 / 1036 | 1231 / 1530 | 961 / 1800 |
| 35 | 2876 | 2306 / 570 | 1812 / 1064 | 1286 / 1590 | 986 / 1890 |
| 36 | 3034 | 2434 / 600 | 1914 / 1120 | 1354 / 1680 | 1054 / 1980 |
| 37 | 3196 | 2566 / 630 | 1992 / 1204 | 1426 / 1770 | 1096 / 2100 |
| 38 | 3362 | 2702 / 660 | 2102 / 1260 | 1502 / 1860 | 1142 / 2220 |
| 39 | 3532 | 2812 / 720 | 2216 / 1316 | 1582 / 1950 | 1222 / 2310 |
| 40 | 3706 | 2956 / 750 | 2334 / 1372 | 1666 / 2040 | 1276 / 2430 |
What each level recovers
| Level | Nominal recovery | EC share of the symbol |
|---|---|---|
| L | ~7% | 19–27% |
| M | ~15% | 36–39% |
| Q | ~25% | 50–56% |
| H | ~30% | 63–66% |
The EC share is roughly twice the recovery rate because Reed–Solomon spends two EC codewords to fix each codeword whose location is unknown, and one for an erasure whose location is known. At level H nearly two-thirds of the printed pattern is redundancy.
The smallest versions recover slightly less than the arithmetic suggests: version 1 at level L has 7 EC codewords but corrects only 2 codeword errors, because 3 of those 7 are reserved for misdecode protection rather than correction.
Blocks, not one big calculation
From version 3 upward the data is split into multiple Reed–Solomon blocks that are error corrected independently and then interleaved. Version 40 at level H uses 81 blocks of 45–46 codewords each; version 1 is always a single block. Damage concentrated in one block can defeat a code even when the total damage is under the nominal percentage.
Turning codewords into characters
Multiply data codewords by 8 bits, subtract the 4-bit mode indicator and the character count indicator, and divide by the bits per character for the mode. That derivation is already done for you in the capacity table: version 40-L's 2,956 data codewords are exactly where the famous 7,089-digit ceiling comes from. To check a real payload rather than the theory, decode the rendered output.
FAQ
How many error correction codewords does a QR code have?
It depends on version and level: from 7 (version 1, level L) to 2,430 (version 40, level H). The total codeword count is fixed per version; the level only changes the data/EC split.
What percentage of a QR code is error correction?
Roughly 19–27% of codewords at level L, 36–39% at M, 50–56% at Q and 63–66% at H. That is about double the recovery rate, since fixing one unknown error costs two EC codewords.
Why does level H only recover 30% when 65% of the code is redundancy?
Reed–Solomon needs two redundant codewords per corrupted codeword when it does not know which ones are wrong. Only known-location erasures are corrected one-for-one.
Are these numbers from the QR specification?
Yes. They match the error-correction characteristics table in ISO/IEC 18004, and were extracted from the RS block table of the working encoder UseQR uses rather than copied from secondary sources.
Try it: free, no signup
Related
- QR code data capacity table, The maximum a QR code can hold is 7,089 digits, 4,296 uppercase alphanumeric characters, 2,953 bytes or 1,817 kanji: all at version 40, error-correction…
- QR code version and module count table, Every QR version's module count follows one formula: 17 + 4 × version. Version 1 is 21 × 21 modules and version 40 is 177 × 177. This table lists all…
- QR code error correction levels explained, L, M, Q and H tolerate roughly 7%, 15%, 25% and 30% damage. Higher levels cost capacity, so the same payload needs a bigger version, which means smaller…
- Reed–Solomon error correction in QR codes, made readable, QR codes append Reed–Solomon check codewords computed over GF(256). What "recovers 30% damage" really means: erasures count once, unknown errors twice.