A QR code is a 2D barcode. It\u2019s made of black and white squares, and those squares encode a string of text. The question is: how long can that string be? The honest answer is "it depends," and the range is wider than most people think. The smallest QR codes hold 17 characters. The largest hold nearly 3,000 alphanumeric characters or about 7,000 digits. A Chinese character uses 2 bytes, so the practical limit for Chinese text drops to around 1,800 characters. Emoji? Forget it — one emoji can use 4 bytes and the visible limit for emoji-only QR codes is about 1,500.
By the end, you will know the real upper bound for any QR code, why your scanner says "data too large" sometimes, and what to do when you actually need to encode that much data.
The Quick Answer
If you need the number right now, here it is. The biggest practical QR code, version 40 with low error correction, can hold:
- Numeric only (0–9): 7,089 characters
- Alphanumeric (0–9, A–Z, space, $%*+-./:): 4,296 characters
- Byte mode (any byte 0–255): 2,953 characters (or 1,468 Chinese/CJK characters in UTF-8)
Real-world QR codes stop well short of these limits. Scanning distance, lighting, and print size all make a dense, maxed-out QR code impractical. The codes you see on packaging, posters, and menus are usually versions 3 through 7, holding between 20 and 200 characters.
The Three Encoding Modes
QR codes aren\u2019t one-size-fits-all. They have three primary encoding modes, and choosing the right one is the difference between fitting 100 characters and fitting 1,000.
1. Numeric mode (most efficient)
Each digit is encoded in 3.33 bits — the most efficient mode by far. Use it for phone numbers, IDs, dates, prices, and any data that\u2019s all digits. This is why a phone number (10 digits) fits in a tiny QR code that scans from 10 feet away.
2. Alphanumeric mode
Each character takes 5.5 bits. The character set is the 45 characters supported: 0–9, A–Z (uppercase only), space, and $%*+-./:. Use it for URLs, codes, and most English text. Note: no lowercase, no accents. If you need "café," use byte mode.
3. Byte mode (binary)
Each byte is 8 bits. This is the only mode that handles arbitrary text, including lowercase, accented characters, emoji, and binary data like images or audio clips. UTF-8 text goes here. The trade-off: 8 bits per character is the least efficient of the three modes, so the code needs more modules to hold the same logical content.
There is also a fourth mode, Kanji, optimized for Japanese characters, that encodes 13 bits per character. It\u2019s rarely used outside Japan.
Version and Capacity, Side by Side
QR codes come in 40 versions. Version 1 is a 21x21 module grid. Each version adds 4 modules per side, so version 40 is 177x177. The bigger the grid, the more data it can hold. The actual capacity depends on the version and the error correction level.
Here is the real table. The numbers come straight from the QR Code spec (ISO/IEC 18004). Error correction levels are L (7%), M (15%), Q (25%), and H (30%) — higher correction means more redundancy and less capacity.
Numeric mode (digits 0-9)
- Version 1, L: 41 characters
- Version 5, M: 290 characters
- Version 10, H: 213 characters
- Version 20, L: 2,224 characters
- Version 40, L: 7,089 characters (max)
Alphanumeric mode (uppercase, digits, few symbols)
- Version 1, L: 25 characters
- Version 5, M: 178 characters
- Version 10, H: 131 characters
- Version 20, L: 1,367 characters
- Version 40, L: 4,296 characters (max)
Byte mode (any binary data)
- Version 1, L: 17 characters
- Version 5, M: 114 characters
- Version 10, H: 86 characters
- Version 20, L: 858 characters
- Version 40, L: 2,953 characters (max)
How to Choose the Right Version
You almost never pick a version manually. The QR generator picks it for you based on your data and your error correction level. What you pick is:
Step 1: Decide on error correction
Higher correction lets the code survive damage (a smudged code on a coffee cup, a partially obscured code on a billboard) but takes more space.
- L (7%): Clean indoor use, no logo. Maximum capacity.
- M (15%): Default. Good for most printed materials. A small logo fits in the margin.
- Q (25%): Outdoor or industrial use. Smudges, scratches, weathering.
- H (30%): Center logo, harsh environments, low-light scanning. The code is recoverable even with 30% damaged.
Step 2: Estimate your data size
Count your characters. If your text is 30 alphanumeric characters and 1 URL, you are in version 3 territory. If you are encoding a 500-character WiFi password, version 15. If you are encoding 2,000 bytes of Chinese text, version 30+.
Step 3: Let the generator pick
Any modern QR generator — including the one in this tool — picks the smallest version that fits your data with your chosen correction level. You do not need to do this math by hand.
The Real Limits Most People Hit
The spec\u2019s 7,089-character max is real but practically meaningless. Here are the limits that actually matter for everyday use.
URLs are the bottleneck
The vast majority of QR codes encode a URL. Modern URLs are 50 to 200 characters, especially with UTM parameters, deep links, and tracking. A URL-heavy QR code lands in version 4–8 territory — small, scannable, fits anywhere.
If you are encoding a 1,000-character URL (some analytics setups, some deep links), you are in version 20+, which is a 97x97 module grid. That is a large code that needs a print area of at least 4 cm x 4 cm to scan reliably. Most people solve this by using a short URL or a redirect service.
Chinese and emoji: a real cost
Chinese text in UTF-8 takes 3 bytes per character (most CJK). One Chinese character is the same as 3 English characters in byte mode. So 100 Chinese characters uses the same code space as 300 English characters, which means a larger QR code for the same logical content.
Emoji are worse: a single emoji can be 4 bytes. The visible "red heart" ❤️ is U+2764 U+FE0F, which is 6 bytes in UTF-8. A QR code that just says "I ❤️ QR codes" is encoding 16 characters in 26 bytes of data. The capacity math still works, but you are using byte mode for the whole string.
Binary payloads (images, audio, business cards)
People sometimes ask "can I put an image or audio clip in a QR code?" The honest answer: yes, but the practical limit is small. A 200x200 pixel image is roughly 12 KB compressed. That is way more than the 2,953-byte byte mode limit. Stick to vCard business cards, which are 200–500 bytes — that fits comfortably in a small code.
When You Actually Need Maximum Capacity
There are real reasons to max out a QR code. They are rare but they exist.
1. Long WiFi credentials
WPA2 passwords can be up to 63 characters. Combined with SSID and security type, a WiFi QR code is 40–80 characters — well within easy capacity.
2. vCard business cards
A full vCard with name, title, company, multiple phones, emails, and a website can hit 300–500 characters. v3–v5 codes handle this easily. The vCard format is verbose; using vCard 3.0 instead of 4.0 saves characters.
3. SMS or email with pre-filled body
An SMS with a long pre-filled body (e.g., "Hi, I would like to order...") can hit 200+ characters. Email bodies get long fast. Both fit in v5–v10 codes.
4. Digital tickets and boarding passes
PDF417 and Aztec codes handle this better than QR, but QR can encode a record locator plus passenger name plus a few fields. Real-world boarding passes are 100–200 characters.
Micro QR: For Really Small Codes
There is a variant called Micro QR, designed for cases where a tiny physical size matters more than capacity. Micro QR only has versions M1 through M4, with module sizes from 11x11 to 17x17. The capacity is correspondingly tiny:
- M1: 5 numeric, 3 alphanumeric, 2 byte
- M4: 35 numeric, 21 alphanumeric, 15 byte
Micro QR is used for things like part labels on electronics or single-character codes. The standard scanner on your phone will read it, but most consumer apps do not generate it.
How to Read the Capacity of a Code You Already Have
If you generated a QR code and want to know how much room you have left, the easiest way is to decode it and look at the version number in the metadata. Most QR decoder libraries expose this. In the browser, libraries like jsQR or qrcode-reader return the version. The capacity tables are then just lookup.
Or, simpler: just try to add more characters and re-generate. The generator will tell you if it cannot fit your data. If you see "data too large" with a v40 code and byte mode, you have hit the absolute ceiling of 2,953 bytes. The fix is to compress, shorten, or move to a different code type (Data Matrix, PDF417) that handles more.
Common Mistakes When You Approach the Limit
Mistake 1: Using byte mode when numeric or alphanumeric would do
If your data is a phone number or a code like "ABC-1234," numeric or alphanumeric mode cuts the size by 2-3x. Always pick the most restrictive mode that fits your data.
Mistake 2: Choosing H correction when M would do
Adding a small center logo only needs M correction. H correction is for codes that will be physically damaged. If your code is going on a phone screen, you do not need H.
Mistake 3: Ignoring scan distance
A 100x100 module code looks great on a 10 cm x 10 cm poster, but it will not scan from across the room. If you are encoding more than 200 characters, you need a larger code physically, or you need a smaller code with a short URL redirect.
Frequently Asked Questions
What is the maximum size of a QR code?
Version 40 is the largest standard QR code, at 177x177 modules. It holds 7,089 numeric characters, 4,296 alphanumeric, or 2,953 bytes. The physical size depends on the print resolution; typically 30 cm x 30 cm or more for high-density codes.
Can a QR code hold an image?
Technically yes, but practically no. A small thumbnail (say, 100x100 pixels at low quality) is 5–15 KB compressed, which is 5x the maximum byte capacity. Stick to vCards and short URLs.
How much data can a QR code hold in Chinese?
In UTF-8 byte mode, a QR code holds about 1,468 Chinese characters at the maximum version 40. The reason: each CJK character is 3 bytes in UTF-8, and you have 2,953 bytes total. The Kanji encoding mode (if your generator supports it) is more efficient: about 1,817 characters at version 40.
Why is my QR code not generating?
You have hit the capacity limit. The generator cannot fit your data into a version 40 code, even with the lowest correction. The fix is to compress, shorten, or use a different code format (Data Matrix, PDF417, Aztec) that handles larger payloads.
How do I know what version my QR code is?
Decode it with any QR library. The library returns the version number (1-40) along with the data. The version is also embedded in the alignment patterns of the code itself, but reading it visually is not easy.
What is the difference between L, M, Q, and H error correction?
The four levels indicate how much of the code can be damaged and still scan. L recovers from 7% data loss, M from 15%, Q from 25%, H from 30%. H gives the most resilience but reduces capacity. For most print use, M is the default and right choice.
What to Read Next
If you are encoding a lot of data, the next thing you want is a code that scans well at small physical sizes. These guides cover that:
- QR Code Size Guide — How big to print, scan distance math
- QR Code Error Correction Guide — When to use L, M, Q, H
- QR Code Design Best Practices — Make codes that look good and still scan
- QR Code for Wedding — A real-world example with vCard-sized payloads
Pick a correction level that matches your environment, and let the generator pick the version. If you are hitting v40 and still not fitting, the answer is not a bigger QR code — it is a smaller payload.