Skip to content
UseQR
ESC

↑↓ MOVE↵ OPEN48 PLACES

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.

View as MarkdownPaste this page into any AI assistant — it is plain, portable Markdown.

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