# 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.

Source: https://useqr.app/docs/spec/maximum-safe-logo-coverage · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## 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](/docs/spec/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":

1. **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.
2. **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.
3. **Damage is not perfectly spread.** [Interleaving](/docs/spec/error-correction-block-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](/glossary/decode-verify): render the exact artwork, then read it back
with a real decoder. [/validate](/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](/docs/design/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

- https://useqr.app/url
- https://useqr.app/validate
- https://useqr.app/size-calculator
