QR Studio Pro
Studio-grade QR codes, generated instantly.

QR Codes With Logos - How Big Can the Logo Actually Be?

Everyone says a logo can cover 30% of a QR code. We measured it, and codes stop scanning far earlier than that. Here are the real numbers and what they mean for your design.


Putting your logo in the middle of a QR code is the most common branding request, and the advice you'll find is almost universally the same number: "up to 30%, because error correction level H recovers 30% damage."

That number is wrong. We measured it.


Where the 30% comes from, and why it doesn't mean what people think

Level H does recover roughly 30% — of codewords. A codeword is a block of data in the encoded stream, not a region of the picture. "30% of codewords" and "30% of the visible square" are different quantities, and the relationship between them isn't one-to-one.

Two things make the visual figure much lower:

Damage in one blob is harder than scattered damage. Reed–Solomon correction copes well with errors sprinkled across the symbol. A logo is the opposite: a single solid block that wipes out consecutive codewords in the same region.

Some of the code isn't protected at all. The three big corner squares (finder patterns), the alignment patterns and the timing lines are structural. They're how a scanner locates and orients the code in the first place. Cover one and no error correction level saves you — the code isn't damaged, it's unfindable.

What we measured

We rendered codes at level H with a dense, fully opaque circular logo in the centre, grew it 1% at a time, and decoded each one until it failed.

Content Version Coverage before it stopped decoding
Short URL v3 (29×29) 9%
Medium URL v6 (41×41) 15%
Long URL v8 (49×49) 16%
Full vCard v12 (65×65) 18%

Nothing came close to 30%, and the shortest URL — the single most common thing people encode — failed at less than a third of the quoted figure.

Small codes are the fragile case

This is the part that catches people out. The less data you encode, the smaller the matrix, and the more of it a centre logo destroys.

A v3 code has 841 modules. A v12 code has 4,225. A centre square covering the same proportion of each removes a far more significant share of the small code's limited redundancy — and the fixed-size structural patterns take up a bigger fraction of a small symbol too.

The irony: shortening your URL makes the code easier to scan in every other respect, but leaves less room for a logo.

What we ship, and why it's lower still

Our generator caps logos at 7% of the code's area, defaulting to 5%.

That's below even the worst case we measured, for a straightforward reason: those measurements are best-case. A clean digital render, decoded by a good detector, with no lens, no motion, no lighting and no ink involved. Real scanning adds camera noise, focus error, angle, glare and print gain — all of which eat the margin you have left.

If a code decodes at exactly its measured limit in a lab, it fails in a restaurant.

7% of area still looks like a proper logo

Area and width are easy to confuse, and the difference is large:

Coverage (area) Logo width Looks like
4% 20% of the code Small, discreet mark
5% 22% Our default
7% 26% Prominent, clearly branded
25% 50% Half the code — will not scan

At 7% of area the logo is a quarter of the code's width. Put that next to almost any branded QR code you've seen in the wild and it holds its own.

Design rules that actually matter

Centre it. The middle is the safest region — furthest from all three finder patterns. Off-centre logos hit protected structure much sooner.

Never let it touch a corner square. Worth repeating because it's fatal rather than merely risky.

Use error correction H. Our generator forces this automatically when you add a logo, and locks the control. A logo at level M or L is a code that decodes on your screen and fails in someone's hand.

Keep the logo simple. A solid mark with clear edges reads at small size. A detailed illustration or a logo containing small text turns to mush at 26% of a 3 cm code, so you pay the scannability cost and don't even get a legible logo.

Give it a solid backing. We place the logo on a plate in the code's background colour. That's for legibility and predictability — a transparent logo pasted straight onto the modules shows the pattern through its gaps and looks like a mistake.

To be straight about the limits of our own testing: we tried to show that the backing plate also improves decoding, and couldn't demonstrate it. At an equal obscured footprint, plate and no-plate performed identically, and the test we used turned out to be constrained by module size rather than by the overlay. So treat the plate as a design decision, not a scannability one — and note it isn't free, since its margin makes the obscured area slightly larger than the logo itself.

Then test it properly

A logo makes testing more important, not less. You've deliberately damaged the code, so it has less margin for everything else.

  1. Scan on screen at final size.
  2. Print one proof at final size, on the real stock and finish.
  3. Scan the print with at least two phones — one recent iPhone, one older Android.
  4. Scan at an angle, from a realistic distance, in the lighting the code will actually live in.
  5. If any of those hesitate, shrink the logo. A slightly smaller mark that always works beats a bigger one that works most of the time.

When to skip the logo

Sometimes the honest answer is don't:

A plain code that always scans does its job. A branded one that fails for one customer in twenty has cost you more than the branding was worth.


Our generator includes logo embedding on the Pro tier, with error correction forced to H and the size capped at the measured-safe limit — so the code you download is one we've verified still decodes.

Make a QR code now
Free, no sign-up, unlimited previews.
Open the studio