Spec & internals
Maximum safe logo coverage by error correction level
Safe logo area coverage by error correction level, L (7% damage tolerance) is effectively unusable for logos, M (15%) allows about 8% of the code area, Q (25%) about 16%, and H (30%) about 20%. Those are area figures: a logo spanning 45% of the code's side covers 20% of its area.
The table
Each error-correction level tolerates a fixed fraction of damaged codewords. A logo should spend at most about two thirds of that tolerance, leaving the rest for print damage, glare and camera noise:
| EC level | Damage tolerance | Safe logo area | Logo side (of code width) |
|---|---|---|---|
| L | ~7% | none: do not use for logos | n/a |
| M | ~15% | ~8% | up to ~28% |
| Q | ~25% | ~16% | up to ~40% |
| H | ~30% | ~20% | up to ~45% |
The mechanics of why a logo consumes error-correction budget are on how logos work without breaking a code; this page is the numbers.
Area vs side: the unit trap
The single most common mistake in logo sizing is confusing the two columns above. Generators (UseQR included) specify logo size as a fraction of the code's side; the error-correction budget is spent by area, and area is the side fraction squared:
| Logo side ratio | Area covered |
|---|---|
| 0.20 (typical default) | 4% |
| 0.30 | 9% |
| 0.35 (UseQR's maximum) | 12.25% |
| 0.40 | 16% |
| 0.45 | 20% |
So a "20% logo" in a generator's settings usually means 20% of the side: a modest 4% of the area, comfortably safe even at level M. UseQR clamps the side ratio to 0.35, which caps area coverage at 12.25%, about half the level-H safe line, and it raises error correction to H automatically when you add a logo, unless you have pinned a level yourself.
Why the safe figures sit below the tolerance
Three effects eat the gap between "~30% tolerance" and "~20% safe":
- The budget is shared. Scuffs, ink problems and low light draw from the same Reed–Solomon account as the logo. A code that scans in the office at 29% coverage fails on a wet poster.
- Edges are messy. Anti-aliased logo borders and translucent shadows turn crisp erasures into partial, wrong modules, and errors cost double the correction capacity of erasures.
- Damage is not perfectly spread. Interleaving distributes a central patch across blocks well, but the distribution is not exact; one block always runs closer to its individual limit than the average suggests.
Raising coverage from 20% to 25% at level H does not fail on your desk. It fails probabilistically, in the field, on the phones and prints you did not test, which is the worst possible way to find out.
Verify, do not extrapolate
The table is a planning tool, not a guarantee: payload density, logo edge treatment and colour contrast all shift the real threshold. The definitive check is a decode–verify loop: render the exact artwork, then read it back with a real decoder. /validate does precisely this and warns when a large logo is paired with an EC level below H. Design-side sizing guidance, including per-level visual examples, lives at logo size limits by error correction level.
FAQ
What is the maximum logo size for a QR code?
About 20% of the code's area with error correction H, a logo spanning up to roughly 45% of the code's width. Push beyond that and you are spending margin reserved for print damage, so field scan rates degrade before desk tests fail.
Can I put a logo on a level L QR code?
No, not safely. Level L tolerates only about 7% codeword damage, which real-world print imperfections can consume on their own. Regenerate the code at Q or H before adding any logo.
Does a bigger logo need a bigger QR code?
Indirectly. Raising error correction to H to afford the logo increases the version, adding modules; keeping the printed size fixed then shrinks every module. If the code is dense, enlarge the print or shorten the payload alongside the logo.
How do I know if my logo is too big?
Render the final artwork and decode it with a real scanner or a verify tool. If it fails, or only just decodes, shrink the logo side ratio or raise the error correction level and test again, arithmetic estimates, including this table, are starting points rather than proof.
Try it: free, no signup
Related
- QR code anatomy: every region of the symbol, A labelled tour of a QR code: finder patterns, separators, timing, alignment, format and version information, the data region and the quiet zone.
- How logos work without breaking a QR code, A logo deletes data modules and error correction rebuilds them. The budget maths, why centre placement matters, and how generators keep codes scannable.
- Error correction blocks and interleaving in QR codes, Why QR data is split into blocks and woven together codeword by codeword: so one physical scratch spreads across every block instead of destroying one.
- Logo size limits by error-correction level, How big a QR code logo can be at levels L, M, Q and H: the tolerance each level buys, the practical coverage budget, and why the ceilings lie.
- Adding a logo to a QR code, safely, Keep the logo central, under about 20–25% of the code area, at error-correction level Q or H, on a solid light panel with two or three modules of…