QR Code Logos: How Big Is Too Big, and Why They Work — featured illustration
Design

QR Code Logos: How Big Is Too Big, and Why They Work

6 min read
Create a QR code

Put your thumb over the middle of a printed QR code and scan it. It works. That is not luck and it is not a clever camera, it is the same mechanism that lets a logo sit in the center of a code without breaking it, and following the mechanism tells you exactly where the limits sit.

A logo is damage the decoder repairs

Every QR code carries redundant data. Alongside the codewords holding your URL, the encoder writes extra codewords derived from them, enough that the decoder can reconstruct values it never received. The four error correction levels set how much of that redundancy exists: roughly seven percent of codewords recoverable at L, fifteen at M, twenty-five at Q, and thirty at H.

A logo placed over the center destroys the modules underneath it. The decoder reads garbage there, notices the inconsistency, and solves for what those codewords must have been. From the decoder's point of view a logo is indistinguishable from a coffee stain, and the repair works the same way for both. The mechanics are covered in how QR codes work.

Why "you can cover 30 percent" is the wrong reading

That line gets repeated everywhere and it causes real print failures. Four things are wrong with it.

It is a ceiling for the whole symbol, not an allowance for a region. Thirty percent describes the maximum total damage the code can survive at level H, not a zone you are entitled to fill with artwork.

It is a shared budget. Print defects, ink spread, scuffs, folds, glare, a fingerprint on the lens, poor focus, weak contrast, and a low-resolution reproduction all draw from the same pool. Spend it on the logo and nothing remains for the physical world, which always shows up.

It is measured in codewords, not area. A logo covering a given fraction of the picture does not destroy that same fraction of codewords. Edges are the reason: a logo whose boundary clips the edges of surrounding modules corrupts more codewords than its footprint suggests, because a partially covered module is unreliable rather than cleanly missing.

It assumes the damage lands on data. Error correction protects data codewords. It does not protect the structures the decoder needs before it can locate the data in the first place.

The practical version is to keep deliberate covering well under the theoretical limit and leave most of the budget unspent for the world to consume. A reasonable rule of thumb is to stay at or below roughly a tenth of the symbol's area at level H and then verify, rather than calculating your way up toward a number.

Center it, because the center is the cheapest real estate

The middle of a symbol carries ordinary data modules. The corners do not. The three finder patterns, the format information beside them, and the timing rows running between them are all structural: the decoder uses them to find the symbol, orient it, and establish the grid before any error correction begins. Damage there is unrecoverable, because the repair mechanism has not started yet. The same applies to the quiet zone, which is why a logo should never push into the margin either.

One caveat about the middle. Larger symbols carry additional alignment squares distributed through the grid, and at some sizes one of them sits at or very near the center. Keeping the logo modest sidesteps the question. It also explains a confusing failure: a code that suddenly stops scanning after you lengthened its URL, with no other change, has probably grown into a larger layout with a different internal arrangement under the same logo.

Give the logo a margin

Set the logo inside a clean light gap rather than dropping it straight onto the modules.

The visual reason is that a bounded shape reads as intentional while a bleeding one reads as a printing defect. The technical reason matters more. A fully covered module is at least consistently wrong, whereas a half-covered module thresholds unpredictably and can flip between frames. A margin converts a ragged boundary of ambiguous modules into a clean block of known-missing ones, which is the easier case for the decoder to repair.

Simple silhouettes survive better than detailed ones. A wordmark with thin strokes and a transparent background scatters its interference across a wider region than a solid circle of the same visual weight. If your mark is intricate, put it inside a plain light shape and let that shape be the intrusion.

Higher error correction is not free

The obvious response to a scanning failure is to raise the level to H. That does work, at a cost. More redundancy means more codewords, which means either a physically larger symbol or the same footprint divided into more, smaller modules.

Smaller modules are harder to print cleanly and harder for a camera to resolve, so level H, a large logo, and a small print size all push against each other. There is a point where raising the level makes matters worse rather than better. If you are near it, shortening the encoded data buys back more room than any setting will: a short redirect URL instead of a long one carrying tracking parameters can drop the symbol a size or two. Our size guidance covers the relationship between module count and minimum printable dimensions.

A logo that scans on screen can fail on a business card

Screen testing is the most common way this goes wrong. At 500 pixels on a monitor a generous logo scans without complaint. The same file at twenty millimeters on a card has modules a fraction of a millimeter across, the light margin around the logo has shrunk below the ink's ability to hold an edge, and it fails in someone's hand at a conference.

Scale down before you decide, not after. Export at the resolution you will actually print rather than the resolution that flatters the design. Vector output is safer than raster for print, and if you are working from PNG files, generate them at print resolution instead of scaling a screen-sized image up. The DPI arithmetic is worth doing carefully once.

Re-test after every change

Treat each edit as invalidating the previous test, because it does. Swapping the logo, resizing it, recoloring it, changing the code's own colors, switching error correction level, and above all changing the encoded content, which can change the symbol's size and rearrange the whole module layout underneath an unchanged logo.

A sensible check before anything goes to print:

  • Two phones minimum, one recent and one several years old.
  • One reading in poor light.
  • One reading at an angle rather than straight on.
  • The final printed proof, at final size, on the real stock.
  • A scan after the piece has been carried around for a few days, since the damage budget is shared with wear.

If you are building one now, the logo generator applies the covering and the error correction level together so you can see the result as you adjust it, and the walkthrough covers the rest of the setup.

Share this article