Skip to content
UseQR
ESC

↑↓ MOVE↵ OPEN48 PLACES

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.

View as MarkdownPaste this page into any AI assistant — it is plain, portable Markdown.

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