Troubleshooting
QR code too dense to scan
A dense code means too many modules for the printed size. The fix is almost always to shorten the payload rather than to enlarge the code or raise error correction — raising error correction makes density worse, not better.
What density actually is
Density is module count per printed millimetre. It is driven by the version, which is driven by payload length and error-correction level.
| Payload | Version at EC M | Modules | Module size at 3 cm |
|---|---|---|---|
| 25 chars | 2 | 25 | 1.2 mm |
| 100 chars | 5 | 37 | 0.81 mm |
| 200 chars | 8 | 49 | 0.61 mm |
| 400 chars | 12 | 65 | 0.46 mm |
| 800 chars | 19 | 93 | 0.32 mm |
Below about 0.4 mm per module, consumer printing and phone cameras start to struggle.
Fixes, in order of effectiveness
1. Shorten the payload. The highest-leverage change by far.
- Remove UTM parameters from the code and apply them on your own redirect instead — this alone often removes 60–100 characters.
- Use a short path on your own domain:
example.com/s26notexample.com/campaigns/2026/spring/landing. - For a vCard, switch to MeCard (~40% smaller) or link to a hosted contact page instead.
2. Use uppercase where you can. Uppercase letters, digits and a few symbols encode in
alphanumeric mode at 5.5 bits per character instead of 8. HTTPS://EXAMPLE.COM/SALE is
about 45% more efficient. Schemes and hostnames are case-insensitive; paths usually are not.
3. Lower the error-correction level. If the code is on a clean surface with no logo, level L or M is fine and drops the version. Going the other way — raising to H "to be safe" — makes the code denser and often harder to scan.
4. Only then, enlarge the code.
The trap
The intuitive response to a code that will not scan is to raise error correction. For a dense code that is exactly backwards: level H needs more codewords, which means a higher version, which means smaller modules at the same printed size. Fix density first.
FAQ
How do I make a QR code less dense?
Shorten what it encodes. Removing tracking parameters, using a short path on your own domain, and switching to uppercase where possible all reduce the version and enlarge every module.
Does higher error correction make a dense code scan better?
No, usually worse. Higher levels need more codewords, pushing the version up and shrinking every module at the same printed size. Reduce the payload instead.
Why does uppercase make a QR code smaller?
Uppercase letters, digits and a few symbols are encoded in alphanumeric mode at 5.5 bits per character; anything else uses byte mode at 8 bits. The saving is around 30–45%.
What is the maximum module size I should aim for?
Aim for a minimum, not a maximum: at least 0.4 mm per module for consumer printing, and 0.5 mm or more for uncoated stock, thermal printing or anything scanned in poor light.
Try it — free, no signup
Related
- QR code not scanning: the checklist — Work through these in order, because they are ranked by how often they are the actual cause: quiet zone, contrast, size for distance, glare, blur from…