QR code data capacity
SmartQRCode editorial · Updated October 2026
QR code data capacity is version plus mode plus error correction. Version 1 is 21×21 modules. Version 40 is 177×177. URLs run in byte mode. A long static string with UTM query parameters fills that budget and looks like pepper at card size. A hosted short address does not.
QR code data capacity as version, not as a marketing limit
Each version adds four modules per side. More payload raises version. Higher error correction packs the same payload into a denser pattern, so byte mode URL length and L-to-H both show up as busy squares. Error correction is the damage budget. This page is why the grid filled.
A link how-to is where people hit the ceiling with campaign URLs. A website type stores a short hosted address in the modules; the long destination lives behind the hop. A text type serves a page; it does not dump the essay into version 40. A Wi-Fi type does dump the WIFI: string into the modules, because that type is static.
Version forty ceiling exists. You will meet it by encoding a novel, not by encoding a normal https link on hosted. You will meet a practical ceiling much earlier on a 2 cm card. QR code data capacity on a business card is a millimetre argument dressed as a byte argument. Host or enlarge. Do not encode the handbook.
Why a long URL looks like pepper
UTM inflates static bytes. Those characters are payload. Version grows. Modules shrink at the same millimetres. Hosted shortens printed payload. Parameters sit on the destination you can still edit. That is the capacity argument for hosting even when you think you will never retarget.
Kanji, numeric, and alphanumeric modes pack some alphabets tighter. URLs still travel as bytes in practice. Do not expect a numeric mode trick to save a tracking URL. A Canva widget pasted with a 200-character string hits the same ceiling. Shorten first.
Does error correction steal capacity
It spends modules on restoration. H survives more damage and needs a busier grid for the same bytes. On classroom cards that must stay small, host the form URL and use M, rather than encoding a pre-filled 300-character view link as static at H. QR code data capacity is the reason that pre-fill belongs behind a hop.
When you should host instead of encoding more bytes
When the millimetres are fixed, when UTMs will grow, or when the string will be replaced. A Canva static widget is enough for a short one-off URL that will never be counted. QR code data capacity still applies to that widget; a paragraph pasted into Canva will densify just the same. Host or shorten. Do not upscale a pepper grid and hope.
Text landings versus a novel in the modules
A text type serves a body of text from a hosted page. The printed payload is the short address. Dumping the essay into a static generator is how you meet version 40 on a flyer. QR code data capacity is not a reason to encode a handbook as modules. It is a reason to host the handbook.
Wi-Fi is the exception that still lives in the modules: SSID and password as a WIFI: string. Keep that string exact and short. Do not append a marketing sentence. Classroom cards that must stay 2 cm should host the assignment URL. A Canva static widget is enough for a short one-off link that will never be counted. Capacity still applies; a paragraph pasted into Canva densifies just the same. If the grid looks like pepper at card size, you hit the practical ceiling, not a product bug. QR code data capacity is that ceiling. Shorten, host, or enlarge. Those are the only three honest moves. QR code data capacity will not apologise for a 200-character static string on a 2 cm card. The card is the constraint. The bytes must fit. QR code data capacity on a flyer is more generous than on a card, and still not a novel. Host the handbook. Encode a short URL or a hosted address. Leave the novel on a page. QR code data capacity is why that page should be hosted, not baked into version 40.
Questions this raises
More payload raises version, which adds modules. At a fixed millimetre size those modules shrink. UTMs on a static file are payload. On a hosted file they are not.
Higher L-to-H levels spend modules on restoration, so the same bytes need a higher version or a busier grid. That is a density cost, not a bug.
When the card must stay about 2 cm or you will add campaign parameters later. Hosted ink stores a short address. Static ink stores the whole string.
A long text landing is still served from a hosted page; the printed payload is the short URL. A static dump of a novel into modules is how version races to 40.
A WIFI: string with a long SSID and password is byte mode in the modules. Keep SSIDs typed exactly; do not pad with marketing copy.
Keep going
The tools and playbooks this post refers to, one click away.
Make the code this post is about
$1.99 for 7 days, then a paid plan. Pick a type, brand it, and edit the destination whenever you like, even after it is printed.