# How logos work without breaking a QR code

> A logo works by deleting data modules and letting Reed–Solomon error correction reconstruct them as erasures. At level H the code survives about 30% codeword damage; keeping logo area under about 20% leaves margin for print damage. Centre placement matters because the corners hold unprotected finder patterns.

Source: https://useqr.app/docs/spec/how-logos-work-without-breaking-a-code · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## The trick: controlled damage

A logo does not sit "on top of" a QR code in any cooperative sense. It **destroys the
modules underneath it**, and the code survives for exactly one reason:
[Reed–Solomon error correction](/docs/spec/reed-solomon-error-correction) was designed to
reconstruct missing codewords. A QR code with a logo is a deliberately damaged code that
still carries enough redundancy to decode.

This has a clarifying consequence: there is no special "logo support" in the QR standard.
Any code with enough error correction tolerates a logo; any logo big enough defeats any
level of error correction.

## The budget maths

Each [error-correction level](/glossary/error-correction-level) sets the damage budget:
roughly **7% (L), 15% (M), 25% (Q), 30% (H)** of codewords. A logo spends from that budget
by area, cover a fifth of the data region and you have consumed about a fifth of the
codewords.

But the logo must not spend the *whole* budget, because print imperfections, glare, dirt
and camera noise draw from the same account. The working rule:

```
EC H budget            ~30%
minus real-world margin ~10%
= safe logo coverage    ~20% of code area
```

At level M the same subtraction leaves only ~8%, which is why serious logo work starts at
Q or H. The full coverage-by-level table is on
[maximum safe logo coverage](/docs/spec/maximum-safe-logo-coverage).

Note the units: these are **area** percentages. Generators usually specify logo size as a
fraction of the code's *side*, and area is that fraction squared, a logo spanning 30% of
the side covers only 9% of the area. UseQR's renderer clamps the logo side to at most 35%
of the code (≈12% of area) and, unless you set a level yourself, silently raises error
correction to H whenever a logo is present, the two defaults that keep casual logo codes
inside the budget.

## Why the centre, specifically

Error correction protects data and EC codewords only. It does not protect:

- the three corner [finder patterns](/docs/spec/finder-patterns), lose one and the
  decoder cannot locate the code at all;
- the [timing patterns](/docs/spec/timing-patterns) linking them;
- the [format information](/docs/spec/format-information) bordering the finders;
- the [quiet zone](/glossary/quiet-zone).

The centre of the symbol is the region furthest from all of these. It contains only data
modules (plus, in mid-size versions, an alignment pattern, which decoders tolerate losing
far better than a finder). A corner logo of identical size is dramatically more destructive
than a centre logo, which is why every credible generator centres by default.

A clean knockout (clearing the modules and giving the logo a solid background with a
module of padding) also beats translucent overlays. Fully removed modules are unambiguous
erasures; a logo showing through half-dimmed modules creates *wrong* reads, and errors cost
Reed–Solomon twice as much correction capacity as erasures.

## Trust arithmetic, then verify anyway

Coverage maths assumes ideal conditions. Anti-aliasing at the logo edge, low-contrast logo
colours and dense payloads all shift the real threshold, so the only guarantee is decoding
the rendered result: [/validate](/validate) renders your exact code and reads it back with
a real decoder, and the [design-side guidance](/docs/design/qr-code-with-logo-best-practices)
covers the aesthetic half. For the workflow start-to-finish, see
[how to make a QR code with a logo](/docs/how-to/how-to-make-a-qr-code-with-a-logo).

## FAQ

### Why does a QR code still work with a logo covering the middle?
Reed–Solomon error correction stores redundant codewords that can reconstruct missing data. A centred logo destroys a known, contiguous patch of data modules, which the decoder treats as erasures and rebuilds, provided the covered area stays inside the error-correction budget.

### How big can a logo be in a QR code?
About 20% of the code's area at error correction H, which corresponds to a logo spanning roughly 45% of the code's width. At level M the safe area drops to about 8%. Always leave margin below the theoretical maximum for print damage.

### Where should a logo go in a QR code?
Dead centre. The corners contain finder patterns and format information, which error correction cannot repair; the centre contains only data modules. A corner logo of the same size can make a code unscannable while a centred one scans fine.

### Should the logo be transparent or have a background?
Give it a solid background with a little padding. Cleanly removed modules are erasures, which Reed–Solomon corrects at twice the rate of errors; artwork showing through partially visible modules produces wrong reads and burns correction capacity twice as fast.

## Try it

- https://useqr.app/url
- https://useqr.app/validate
- https://useqr.app/scan
