How Much Data Can a QR Code Hold? Capacity, Versions and Encoding Explained
Published 27 October 2026 by the QRCodeBarn team.
A QR code can hold up to 7,089 digits, 4,296 letters and numbers, or 2,953 bytes of text, but almost nobody should get close to those limits. The amount of data you put in a code decides how big and dense it is, and a dense code is harder to scan from a poster, a business card or a phone screen. This guide explains where the limits come from, how much fits at each size, and how to keep your codes small enough to scan first time.
The short answer
How much a QR code holds depends on three things: its version (how many squares it has), its error correction level (how much damage it can survive) and its encoding mode (what kind of characters you store). The maximum, 2,953 bytes, only applies to the largest version with the lowest error correction. A typical web address of 30 to 60 characters needs a small, easy-to-scan code. A long address with tracking tags, or a full contact card, needs a much bigger one.
QR code versions: from 21 squares to 177
The small squares that make up a QR code are called modules. The standard defines 40 sizes, called versions.
- Version 1 is a grid of 21 × 21 modules.
- Each version adds 4 modules to each side, so version 2 is 25 × 25, version 3 is 29 × 29, and so on.
- Version 40 is the largest, at 177 × 177 modules, more than 31,000 squares in total.
Your QR code generator picks the smallest version that fits your data, so you rarely choose a version yourself. But the version matters, because printing a version 10 code at the same physical size as a version 2 code makes every module much smaller. Smaller modules need a sharper print, a steadier hand and a closer phone. Our QR code size guide covers how big to print.
Encoding modes: why some text takes less room
QR codes don't store every character the same way. The standard has four main modes, and a good encoder chooses the most compact one for each part of your data.
- Numeric mode stores only the digits 0 to 9. It packs three digits into 10 bits, so it is the most efficient by far.
- Alphanumeric mode stores 45 characters: the digits, the capital letters A to Z, the space and nine symbols ($ % * + - . / :). It packs two characters into 11 bits. It has no lower-case letters.
- Byte mode stores any 8-bit data. This is what most web addresses, messages and contact cards use, usually as UTF-8 text, which means accented letters and emoji take two to four bytes each.
- Kanji mode stores Japanese characters at 13 bits each, more compactly than byte mode would.
This is why a phone number fits in a tiny code and a long sentence with emoji does not. It is also why the headline figures differ so much: 7,089 digits, but only 2,953 bytes.
How much fits at each size
The table below shows how many bytes (for example, the characters of a lower-case web address) fit in a selection of versions at each error correction level. These are the figures from the QR code standard for byte mode.
| Version | Grid size | Level L (about 7%) | Level M (about 15%) | Level Q (about 25%) | Level H (about 30%) |
|---|---|---|---|---|---|
| 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 |
| 10 | 57 × 57 | 271 | 213 | 151 | 119 |
| 40 | 177 × 177 | 2,953 | 2,331 | 1,663 | 1,273 |
Two things stand out. First, raising error correction from L to H roughly halves the space for your data, because the extra recovery information takes up room. Second, codes grow quickly: a version 10 code has more than seven times as many modules as a version 1 code. You can read more about the four levels in our guide to QR code error correction.
What real content needs
Here is roughly what common types of content take up, counted as bytes.
- A short web address such as
https://example.co.uk/menuis 26 characters. At level M it fits in a version 2 code, which is easy to scan even when printed small. - A long web address with UTM tracking tags can easily reach 120 to 200 characters. At level M that pushes the code to version 7 to 10, so each module is roughly half the size it would be in a version 2 code printed at the same size.
- A WiFi login uses a format like
WIFI:T:WPA;S:CafeGuest;P:coffee2026;;. Most are 40 to 70 characters, a version 3 or 4 code at level M. See our WiFi QR code guide. - A contact card (vCard) with a name, phone, email, company and address is often 200 to 350 characters, which needs a version 10 to 14 code at level M. That is why contact codes on business cards often look busy. Our guide to QR codes for business cards has tips for keeping them readable.
- A plain text message stored in the code itself can be anything up to the limit, but long text makes a dense code and is awkward to read on a phone. A link to a web page is usually better.
How to keep your QR code small
If your code looks crowded, or it scans slowly, these steps usually help.
- Shorten the web address. Remove tracking parameters you don't need, or use a short link that redirects to the full address. Our guide to short links for QR codes explains the pros and cons, including what happens if the short link service closes.
- Keep only the tracking you will use. If you add UTM tags, keep the values short, for example
utm_source=flyerrather than a long campaign description. - Pick error correction to suit the job. Level M is a sensible default. Use Q or H when the code will carry a logo, or be printed somewhere it might get scuffed, and accept that the code will be a little denser.
- Link to the content rather than storing it. A menu, PDF or long contact card is better hosted on a web page, with the QR code holding only the link.
- Test before printing. Check the code with more than one phone, at the real size and distance. Our guide to testing QR codes has a quick checklist.
Can you use capital letters to make a code smaller?
In theory, yes. A web address written entirely in capital letters can use alphanumeric mode, which takes less room than byte mode. The domain part of a web address isn't case-sensitive, so HTTPS://EXAMPLE.CO.UK works the same as the lower-case version.
In practice, be careful. The path after the domain often is case-sensitive, so /MENU may not open the same page as /menu. Characters such as ?, =, & and _ aren't in the alphanumeric set at all, so most tracking links need byte mode anyway. Only try this if you control the website and have checked the capitalised address opens the right page.
Frequently asked questions
What is the maximum amount of data a QR code can store?
A version 40 QR code at error correction level L can store up to 7,089 digits, 4,296 alphanumeric characters or 2,953 bytes. Codes that large are very dense and hard to scan, so they are rarely used in print.
How many characters can a QR code hold for a web address?
Most web addresses use byte mode, so the limit is up to 2,953 characters in theory. For a code that scans easily, aim for an address under about 80 characters, which keeps the code at a small version.
Does a QR code get bigger when I add more data?
Yes. More data means a higher version with more modules. If you print it at the same physical size, each module gets smaller and the code becomes harder to scan from a distance.
Does error correction reduce how much a QR code can hold?
Yes. Higher levels reserve more of the code for recovery data. A version 10 code holds 271 bytes at level L but only 119 bytes at level H.
Can a QR code store an image or a video?
Not in any useful way. Even the largest code holds under 3 KB, far too little for a photo or video. Host the file online and put its link in the QR code instead, as you would with a PDF QR code.
Do emoji and accented letters take more space?
Yes. In UTF-8 text, a letter such as é takes two bytes, and most emoji take four. A message with a lot of them fills a code much faster than plain English text.
This article was drafted with AI assistance and reviewed for accuracy. Read our editorial policy and AI content policy.