How big can a logo on a QR code be?
A logo dropped into the middle of a QR code doesn’t just sit on top of it decoratively — it blocks the modules underneath, and the code has to reconstruct that missing data from its error-correction budget instead of reading it directly. That budget is finite and depends on the error correction level chosen when the code was generated, which is why the safe logo size isn’t one number but four, one per level. This comes up constantly on business cards and vCards, where a company logo is often the whole reason someone wants a custom code in the first place.
The measured ceilings
Across a range of symbol sizes, the largest logo that reliably survives strict decoding at each error correction level — measured as a percentage of the code’s own width, with a standard opaque white pad behind the logo and no extra padding beyond the logo’s own footprint — comes out to:
- L: 17%
- M: 25%
- Q: 29%
- H: 30%
These are conservative minimums, not optimistic averages: each was tested against several different symbol sizes and the number published is the smallest that held across all of them, so a small code is exactly as safe at these percentages as a much larger one. Go above them and a code may still happen to scan — or it may not, and the failure often shows up first on the cheapest camera or the most washed-out print in the batch, not on the one you tested with.
Width, not area — the distinction that actually matters
These percentages describe the logo’s width relative to the code’s width, not the area it occupies. That distinction matters enormously in practice: a logo at 25% of the code’s width covers only around 6% of its total area, because area scales with the square of a linear dimension. A logo sized to “a quarter of the code” by area — which looks, to the eye, roughly like a logo at 50% of width — would be drastically over the safe ceiling at every error correction level, including H. If you’re working from a design mockup where the logo was sized by eye rather than measured against the code’s width directly, measure it properly before treating it as safe.
Padding reduces the ceiling further
The numbers above assume zero padding beyond the logo’s own footprint — nothing but the artwork itself sits in the cleared centre of the code. Add any padding around the logo, whether that’s breathing room built into the logo’s own image or an explicit margin added by the generator, and the effective ceiling drops, because padding widens the area of the code that’s cleared without adding anything the error correction can recover from. On a small symbol especially, a few extra modules of padding on every side can eat a meaningful share of the remaining safety margin, so a design that hugs the published ceiling and also adds padding around the logo is not safe merely because the logo artwork itself is within the percentage — the padded footprint is what matters, and it’s larger than the logo alone.
Why a white pad behind the logo matters
The ceilings above were measured with an opaque white pad sitting behind the logo, not with the logo’s raw artwork rendered directly over the modules. That pad matters for two separate reasons. First, it guarantees the occluded region reads as a single, predictable block of white to the decoder, rather than an irregular shape shaped by the logo’s actual silhouette, transparency, or antialiased edges — which is what the ceiling was actually measured against. Second, a logo with any transparency, or artwork lighter than the surrounding modules, can read as barely-there to a decoder without a solid pad behind it, which would make the published ceiling look safer than it really is for that specific logo. Skipping the pad is reasonable only when the logo artwork is already fully opaque end to end — otherwise, keep it.
Choosing a level for the logo you want
If a design calls for a larger logo than L or M comfortably allow, raising the error correction level is usually the better move rather than pushing a low level past its ceiling — Q and H exist precisely to give more room for exactly this kind of occlusion, at the cost of a denser code (see our guide to error correction levels for that trade-off in full). Whichever level you land on, these percentages are guidance for before you’ve rendered anything, not a guarantee for the specific code you end up with — a validator that actually renders your logo at your chosen size and strict-decodes the result is the only way to know whether that particular combination of artwork, padding, and error correction level genuinely works, rather than relying on the table alone.
Make a free QR code with QRCodeForge — every format free, no signup, and every code checked before you download it.