QR Code Capacity Reference: Versions, Modes, and Character Limits
How much data can a QR code hold? The answer depends on three variables: the version (size of the code), the encoding mode (type of data), and the error correction level (redundancy). The tables below cover all 40 versions across all 4 modes and 4 error correction levels, drawn from ISO/IEC 18004:2015 -- the international standard that defines QR code structure and encoding.
Versions and module counts
QR code "versions" refer to symbol sizes, not software versions. Version 1 is 21×21 modules; each step adds 4 modules per side. Version 40 is 177×177 modules. The formula is: modules per side = 4 × version + 17.
| Version | Size (modules) | Total modules | Max data (bytes, EC L) |
|---|---|---|---|
| 1 | 21 × 21 | 441 | 19 |
| 2 | 25 × 25 | 625 | 34 |
| 3 | 29 × 29 | 841 | 55 |
| 4 | 33 × 33 | 1,089 | 80 |
| 5 | 37 × 37 | 1,369 | 108 |
| 7 | 45 × 45 | 2,025 | 154 |
| 10 | 57 × 57 | 3,249 | 271 |
| 15 | 77 × 77 | 5,929 | 520 |
| 20 | 97 × 97 | 9,409 | 858 |
| 25 | 117 × 117 | 13,689 | 1,273 |
| 30 | 137 × 137 | 18,769 | 1,732 |
| 35 | 157 × 157 | 24,649 | 2,303 |
| 40 | 177 × 177 | 31,329 | 2,953 |
Not all modules store data. Finder patterns, timing patterns, format information, version information (v7+), and alignment patterns (v2+) occupy fixed regions. The remaining modules carry interleaved data codewords and Reed-Solomon error correction codewords.
Encoding modes
The encoder automatically picks the most efficient mode for your input. Numeric is most efficient; byte is the fallback for general text. Understanding the modes explains why a number-only string produces a simpler QR code than the same length of mixed characters.
| Mode | Character set | Bits per char | Notes |
|---|---|---|---|
| Numeric | 0–9 only | 3.33 avg (groups of 3 digits in 10 bits) | ~3x more efficient than byte mode |
| Alphanumeric | 0–9, A–Z (uppercase only), space, $ % * + - . / : |
5.5 avg (pairs of chars in 11 bits) | ~1.8x more efficient than byte; lowercase letters are NOT included |
| Byte | ISO 8859-1; in practice UTF-8 is widely accepted | 8 (one byte per character) | Baseline; multi-byte UTF-8 chars (emoji, CJK) consume 2–4 bytes each |
| Kanji | Shift JIS double-byte characters | 13 per Shift JIS character | ~1.2x more efficient than byte for Japanese/CJK content |
$%*+-./: qualifies for alphanumeric mode (~1.8x more efficient than byte). Lowercase forces byte mode. This is why some URL shorteners use all-caps slugs -- it visibly reduces QR code complexity.
Capacity tables
Maximum characters per version, error correction level, and encoding mode. Source: ISO/IEC 18004:2015, Table 1.
| Ver | L | M | Q | H |
|---|---|---|---|---|
| 1 | 41 | 34 | 27 | 17 |
| 2 | 77 | 63 | 48 | 34 |
| 3 | 127 | 101 | 77 | 58 |
| 4 | 187 | 149 | 111 | 82 |
| 5 | 255 | 202 | 144 | 106 |
| 6 | 322 | 255 | 178 | 139 |
| 7 | 370 | 293 | 207 | 154 |
| 8 | 461 | 365 | 259 | 202 |
| 9 | 552 | 432 | 312 | 235 |
| 10 | 652 | 513 | 364 | 288 |
| 11 | 772 | 604 | 427 | 331 |
| 12 | 883 | 691 | 489 | 374 |
| 13 | 1022 | 796 | 580 | 427 |
| 14 | 1101 | 871 | 621 | 468 |
| 15 | 1250 | 991 | 703 | 530 |
| 16 | 1408 | 1082 | 775 | 602 |
| 17 | 1548 | 1212 | 876 | 674 |
| 18 | 1725 | 1346 | 948 | 746 |
| 19 | 1903 | 1500 | 1063 | 813 |
| 20 | 2061 | 1600 | 1159 | 919 |
| 21 | 2232 | 1708 | 1224 | 969 |
| 22 | 2409 | 1872 | 1358 | 1056 |
| 23 | 2620 | 2059 | 1468 | 1108 |
| 24 | 2812 | 2188 | 1588 | 1228 |
| 25 | 3057 | 2395 | 1718 | 1286 |
| 26 | 3283 | 2544 | 1804 | 1425 |
| 27 | 3514 | 2701 | 1933 | 1501 |
| 28 | 3669 | 2857 | 2085 | 1581 |
| 29 | 3909 | 3035 | 2181 | 1677 |
| 30 | 4158 | 3289 | 2358 | 1782 |
| 31 | 4417 | 3486 | 2473 | 1897 |
| 32 | 4686 | 3693 | 2670 | 2022 |
| 33 | 4965 | 3909 | 2805 | 2157 |
| 34 | 5253 | 4134 | 2949 | 2301 |
| 35 | 5529 | 4343 | 3081 | 2361 |
| 36 | 5836 | 4588 | 3244 | 2524 |
| 37 | 6153 | 4775 | 3417 | 2625 |
| 38 | 6479 | 5039 | 3599 | 2735 |
| 39 | 6743 | 5313 | 3791 | 2927 |
| 40 | 7089 | 5596 | 3993 | 3057 |
Numeric mode: digits 0–9 only.
| Ver | L | M | Q | H |
|---|---|---|---|---|
| 1 | 25 | 20 | 16 | 10 |
| 2 | 47 | 38 | 29 | 20 |
| 3 | 77 | 61 | 47 | 35 |
| 4 | 114 | 90 | 67 | 50 |
| 5 | 154 | 122 | 87 | 64 |
| 6 | 195 | 154 | 108 | 84 |
| 7 | 224 | 178 | 125 | 93 |
| 8 | 279 | 221 | 157 | 122 |
| 9 | 335 | 262 | 189 | 154 |
| 10 | 395 | 311 | 221 | 174 |
| 11 | 468 | 366 | 259 | 200 |
| 12 | 535 | 419 | 296 | 227 |
| 13 | 619 | 483 | 352 | 259 |
| 14 | 667 | 528 | 376 | 283 |
| 15 | 758 | 600 | 426 | 321 |
| 16 | 854 | 656 | 470 | 365 |
| 17 | 938 | 734 | 531 | 408 |
| 18 | 1046 | 816 | 574 | 452 |
| 19 | 1153 | 909 | 644 | 493 |
| 20 | 1249 | 970 | 702 | 557 |
| 21 | 1352 | 1035 | 742 | 587 |
| 22 | 1460 | 1134 | 823 | 640 |
| 23 | 1588 | 1248 | 890 | 672 |
| 24 | 1704 | 1326 | 963 | 744 |
| 25 | 1853 | 1451 | 1041 | 779 |
| 26 | 1990 | 1542 | 1094 | 864 |
| 27 | 2132 | 1637 | 1172 | 910 |
| 28 | 2223 | 1732 | 1263 | 958 |
| 29 | 2369 | 1839 | 1322 | 1016 |
| 30 | 2520 | 1994 | 1429 | 1080 |
| 31 | 2677 | 2113 | 1499 | 1150 |
| 32 | 2840 | 2238 | 1618 | 1226 |
| 33 | 3009 | 2369 | 1700 | 1307 |
| 34 | 3183 | 2506 | 1787 | 1394 |
| 35 | 3351 | 2632 | 1867 | 1431 |
| 36 | 3537 | 2780 | 1966 | 1530 |
| 37 | 3729 | 2894 | 2071 | 1591 |
| 38 | 3927 | 3054 | 2181 | 1658 |
| 39 | 4087 | 3220 | 2298 | 1774 |
| 40 | 4296 | 3391 | 2420 | 1852 |
Alphanumeric mode: 0–9, A–Z (uppercase only), $%*+-./: and space.
| Ver | L | M | Q | H |
|---|---|---|---|---|
| 1 | 17 | 14 | 11 | 7 |
| 2 | 32 | 26 | 20 | 14 |
| 3 | 53 | 42 | 32 | 24 |
| 4 | 78 | 62 | 46 | 34 |
| 5 | 106 | 84 | 60 | 44 |
| 6 | 134 | 106 | 74 | 58 |
| 7 | 154 | 122 | 86 | 64 |
| 8 | 192 | 152 | 108 | 84 |
| 9 | 230 | 180 | 130 | 98 |
| 10 | 271 | 213 | 151 | 119 |
| 11 | 321 | 251 | 177 | 137 |
| 12 | 367 | 287 | 203 | 155 |
| 13 | 425 | 331 | 241 | 177 |
| 14 | 458 | 362 | 258 | 194 |
| 15 | 520 | 412 | 292 | 220 |
| 16 | 586 | 450 | 322 | 250 |
| 17 | 644 | 504 | 364 | 280 |
| 18 | 718 | 560 | 394 | 310 |
| 19 | 792 | 624 | 442 | 338 |
| 20 | 858 | 666 | 482 | 382 |
| 21 | 929 | 711 | 509 | 403 |
| 22 | 1003 | 779 | 565 | 439 |
| 23 | 1091 | 857 | 611 | 461 |
| 24 | 1171 | 911 | 661 | 511 |
| 25 | 1273 | 997 | 715 | 535 |
| 26 | 1367 | 1059 | 751 | 593 |
| 27 | 1465 | 1125 | 805 | 625 |
| 28 | 1528 | 1190 | 868 | 658 |
| 29 | 1628 | 1264 | 908 | 698 |
| 30 | 1732 | 1370 | 982 | 742 |
| 31 | 1840 | 1452 | 1030 | 790 |
| 32 | 1952 | 1538 | 1112 | 842 |
| 33 | 2068 | 1628 | 1168 | 898 |
| 34 | 2188 | 1722 | 1228 | 958 |
| 35 | 2303 | 1809 | 1283 | 983 |
| 36 | 2431 | 1911 | 1351 | 1051 |
| 37 | 2563 | 1989 | 1423 | 1093 |
| 38 | 2699 | 2099 | 1499 | 1139 |
| 39 | 2809 | 2213 | 1579 | 1219 |
| 40 | 2953 | 2331 | 1663 | 1273 |
Byte mode: ISO 8859-1 / UTF-8. Multi-byte UTF-8 characters (emoji, most CJK) consume 2–4 bytes each.
| Ver | L | M | Q | H |
|---|---|---|---|---|
| 1 | 10 | 8 | 7 | 4 |
| 2 | 20 | 16 | 12 | 8 |
| 3 | 32 | 26 | 20 | 15 |
| 4 | 48 | 38 | 28 | 21 |
| 5 | 65 | 52 | 37 | 27 |
| 6 | 82 | 65 | 45 | 36 |
| 7 | 95 | 75 | 53 | 39 |
| 8 | 118 | 93 | 66 | 52 |
| 9 | 141 | 111 | 80 | 60 |
| 10 | 167 | 131 | 93 | 74 |
| 11 | 198 | 155 | 109 | 85 |
| 12 | 226 | 177 | 125 | 96 |
| 13 | 262 | 204 | 149 | 109 |
| 14 | 282 | 223 | 159 | 120 |
| 15 | 320 | 254 | 180 | 136 |
| 16 | 361 | 277 | 198 | 154 |
| 17 | 397 | 310 | 224 | 173 |
| 18 | 442 | 345 | 243 | 191 |
| 19 | 488 | 384 | 272 | 208 |
| 20 | 528 | 410 | 297 | 235 |
| 21 | 572 | 438 | 314 | 248 |
| 22 | 618 | 480 | 348 | 270 |
| 23 | 672 | 528 | 376 | 284 |
| 24 | 721 | 561 | 407 | 315 |
| 25 | 784 | 614 | 440 | 330 |
| 26 | 842 | 652 | 462 | 365 |
| 27 | 902 | 692 | 496 | 385 |
| 28 | 940 | 732 | 534 | 405 |
| 29 | 1002 | 778 | 559 | 430 |
| 30 | 1066 | 843 | 604 | 457 |
| 31 | 1132 | 894 | 634 | 486 |
| 32 | 1201 | 947 | 684 | 518 |
| 33 | 1273 | 1002 | 719 | 553 |
| 34 | 1347 | 1060 | 756 | 590 |
| 35 | 1417 | 1113 | 790 | 605 |
| 36 | 1496 | 1176 | 832 | 647 |
| 37 | 1577 | 1224 | 876 | 673 |
| 38 | 1661 | 1292 | 923 | 701 |
| 39 | 1729 | 1362 | 972 | 750 |
| 40 | 1817 | 1435 | 1024 | 784 |
Kanji mode: Shift JIS double-byte characters.
Symbol structure
A QR code is not just data modules. Fixed structural regions occupy space in every symbol and are not available for data. Here is what every QR code contains:
| Region | Location / size | Purpose |
|---|---|---|
| Finder patterns | Three 7×7 squares at top-left, top-right, bottom-left corners | Allow scanners to locate and orient the symbol at any rotation and viewing angle |
| Separators | 1-module white border around each finder pattern | Isolate finder patterns from adjacent data modules |
| Timing patterns | Alternating black/white row and column connecting the finder patterns | Establish a coordinate grid; help scanners compensate for distortion |
| Alignment patterns | 5×5 squares at calculated positions; version 1 has none, version 40 has 46 centers | Correct for image distortion in larger symbols; count grows with version |
| Format information | Two copies of 15-bit sequence adjacent to finder patterns | Encodes error correction level and mask pattern; always decodable even when data is damaged |
| Version information | Two copies of 18-bit sequence (versions 7–40 only) | Encodes the version number |
| Dark module | One always-dark module at position (row 4 version+9, column 8) | Required by spec; always set to 1 |
| Data + EC modules | All remaining modules | Interleaved data codewords and Reed-Solomon error correction codewords |
| Quiet zone | Minimum 4-module white margin outside the symbol boundary | Required by ISO/IEC 18004; separates the code from surrounding graphics for reliable detection |
How version is chosen
Version is not a user setting -- it is computed by the encoder as the minimum that fits the data. The process:
- Identify the most compact encoding mode the input qualifies for (numeric > alphanumeric > byte, or kanji for Shift JIS content).
- Compute the total bit count: mode indicator (4 bits) + character count indicator (variable by version and mode) + encoded data bits + terminator bits.
- Find the lowest version where available data codeword capacity ≥ required bit count ÷ 8, at the chosen EC level.
- Apply one of eight data masks to optimize module distribution, reducing long runs of same-color modules that confuse scanners.
This means shorter data always produces a smaller, simpler QR code. A 20-character URL and a 20-character URL with an extra path segment are not the same size code.
https://example.com (19 bytes) already requires version 2 at EC L, or version 3 at EC M.
Practical limits
The table maximums assume single-mode encoding. In practice, most URLs trigger byte mode (lowercase letters, slashes, query strings). Practical version ranges for common data:
- Short URL, ~30 chars: Version 2–3, EC M. Scans from any reasonable distance.
- Typical URL, ~60 chars: Version 4–5, EC M. Still compact and reliable.
- Long URL, 100+ chars: Version 7+. Consider a URL shortener if printing small.
- vCard (business card): Version 6–10 depending on field count.
- WiFi credentials: Version 3–5 for typical networks.
- Dense text block: Version 20–40. Version 40 EC L holds 2,953 bytes (~2,900 ASCII chars). Very dense; scanning requires a large physical print size.
The real constraint at high versions is physical print size, not the spec limit. Each module in a version 10 code printed at 1 inch (25.4mm) is ~0.44mm. Scanners start struggling below 0.25mm per module. The reliable floor is approximately 1 module = 0.5mm, which sets a minimum print size of about 2.5cm (1 inch) for a version 10 code. Version 40 at that floor requires roughly 9cm (3.5 inches).
For print sizing guidance: QR Code Sizes: What Resolution Do You Need?
Standard reference
All capacity data on this page is from ISO/IEC 18004:2015 — Information technology. Automatic identification and data capture techniques. QR Code bar code symbology specification (second edition). The capacity figures appear in Table 1 (Character capacities of QR Code symbols). Alignment pattern positions are in Table 9.
The standard is maintained by ISO Technical Committee 1, Subcommittee 31 (TC1/SC31). QR code was developed by Denso Wave in 1994; first standardized as ISO/IEC 18004:2000. Denso Wave holds the patent but has chosen not to enforce it, which is why QR codes are freely implementable by anyone.