How much data can a QR code hold?
The theoretical maximum, why almost nobody should get near it, and how the length of a web address decides how dense — and how large — a printed code has to be.
Short answerThe largest QR code, version 40 at the lowest error correction level, holds up to 7,089 digits, 4,296 alphanumeric characters, or 2,953 bytes. In practice a printed code should hold far less: a web address of a few dozen characters scans much more reliably than one of a few hundred.
The maximum capacity
How much fits depends on what kind of characters you store. The format has separate encoding modes, and the more restricted the character set, the more efficiently it packs.
| Level | Digits only | Alphanumeric | Bytes |
|---|---|---|---|
| L (about 7%) | 7,089 | 4,296 | 2,953 |
| M (about 15%) | 5,596 | 3,391 | 2,331 |
| Q (about 25%) | 3,993 | 2,420 | 1,663 |
| H (about 30%) | 3,057 | 1,852 | 1,273 |
Alphanumeric mode covers only digits, upper-case letters, the space, and a handful of symbols. Most web addresses contain lower-case letters, so they are stored in byte mode — the last column. For a typical URL, the honest answer is therefore “about 2,953 characters at the very most”, and less at any higher level of error correction.
Versions: 40 sizes of grid
QR codes come in forty versions. Version 1 is 21 × 21 modules, and each version adds four modules per side, so the width in modules is 17 + 4 × version. A generator picks the smallest version that holds your data at the chosen level.
| Version | Modules per side |
|---|---|
| 1 | 21 × 21 |
| 5 | 37 × 37 |
| 10 | 57 × 57 |
| 12 | 65 × 65 |
| 20 | 97 × 97 |
| 40 | 177 × 177 |
A version 1 code holds very little — 17 bytes at level L — which is not even enough for most full web addresses. Short links usually land somewhere in the low single-digit versions; long ones with tracking parameters can easily reach the teens. The structure that makes up each grid is explained in how QR codes work.
Why the practical limit is much lower
A printed code does not get bigger when you add data; its modules get smaller. A version 40 code squeezes 177 modules into the same square a version 3 code fills with 29. At business-card size, the modules of a large version are too fine for a phone to resolve without perfect light and a very steady hand.
- URL length sets the version. More characters, more codewords, a larger grid.
- Version sets the module count. Each step up adds four modules to every side.
- Module count sets the minimum print size. Each module needs to be large enough for a camera at the expected distance to separate it from its neighbours.
So a long link does not just look busier — it forces a larger print, or it scans badly at the size you had planned. The guide to QR code size for printing turns module counts into centimetres for cards, flyers, and posters.
How to keep a link short
- Drop tracking parameters. Everything after a ? that starts with utm_, fbclid, or similar is usually unnecessary for the page to load. Remove it, and check the page still works.
- Use the clean form of share links. Sites like YouTube and Google Maps offer short share URLs that are a fraction of the length of the address bar version — see QR codes for YouTube.
- Make a short path on your own domain. A page such as yoursite.com/menu that you control is short, readable, and can be pointed somewhere new later without reprinting.
- Be wary of third-party shorteners. They add a redirect you do not control; if the service shuts down or changes its terms, every printed code breaks. The trade-offs are covered in static vs dynamic QR codes.
Links to files such as PDFs are often the longest of all, because storage services generate long identifiers. Hosting the file at a short address on your own site helps — see the PDF QR code generator.
Limits on this site
This generator accepts web links of up to 2,000 characters, and plain text of up to about 1,000. That stays inside what a version 40 code holds at level M, but you should rarely need anywhere near it. The generator uses level Q for shorter links and switches to level M once a code would go past version 12, to keep the modules larger.
Under every code it shows the version and the module count, so you can see the effect of trimming a link before you download the PNG or SVG. If those numbers look high for the size you plan to print, shorten the link first. The link is encoded in your browser and never sent to a server, so testing long and short versions costs nothing.
Paste a link and see its version and module count:Convert a URL to a QR code
Related questions
Up to 7,089 digits, 4,296 alphanumeric characters, or 2,953 bytes in the largest version at the lowest error correction level. Web addresses with lower-case letters use byte mode, so roughly 2,953 characters is the absolute ceiling for a URL.
Technically a couple of thousand characters, but for reliable scanning keep it as short as possible — ideally well under 100 characters. Every extra character makes the code denser and harder to read at a given printed size.
Not in any useful sense. A few kilobytes is far too small for a photo or video, so QR codes link to media hosted online instead of containing it.
It makes the grid larger — more modules per side — but the printed size is whatever you choose. If you keep the printed size the same, each module becomes smaller and the code becomes harder to scan.
Yes. At the largest version, level H holds 1,273 bytes compared with 2,953 at level L, because more of the grid is spent on redundancy instead of data.