Spec & internals
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.
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 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 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.
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 — lose one and the decoder cannot locate the code at all;
- the timing patterns linking them;
- the format information bordering the finders;
- the 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 renders your exact code and reads it back with a real decoder, and the design-side guidance covers the aesthetic half. For the workflow start-to-finish, see 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 — 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.
- Maximum safe logo coverage by error correction level — Safe logo area by EC level — roughly 8% at M, 16% at Q, 20% at H, and none at L — with the side-length conversions generators actually use.
- Reed–Solomon error correction in QR codes, made readable — QR codes append Reed–Solomon check codewords computed over GF(256). What "recovers 30% damage" really means: erasures count once, unknown errors twice.
- 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…
- How to add a logo to a QR code — Set error correction to Q or H, place the logo centrally at under about 20% of the code area, give it two or three modules of clear space, and verify the…