A QR code with a logo in the middle looks like it belongs to somebody. People scan it more readily than a bare black square, because a bare black square could have been printed by anyone. The catch is that you are covering up data, and there is a limit to how much you can cover.

Why covering part of a code does not break it

Every QR code stores more than it needs to. The extra is error correction: redundant data that lets a scanner rebuild whatever it cannot read. It was designed for smudges, creases and scratches on factory parts, but a logo is just a very tidy smudge.

How much you can lose depends on the level the code was built at.

LevelRecoverableLargest safe logo width
L7%about 12%
M15%about 17%
Q25%about 22%
H30%25%

The right-hand column is deliberately well under the recoverable percentage. Error correction is not a budget to spend on decoration — it is what keeps the code working after a year on a sunlit window, a coffee ring, or a fold through the middle. Spend it all on your logo and there is nothing left for real life.

The three rules

  1. Keep the logo to 20% of the code width or less. That is the default in our generator, and it sits comfortably below the 25% ceiling even at level H.
  2. Use error correction H. Leave the level on Auto and the generator switches to H by itself the moment you add a logo. Only override that if you know why.
  3. Give the logo a solid backing. A transparent logo dropped straight onto the modules leaves fragments of code showing through the letterforms, which confuses scanners more than a clean opaque block does. The generator pads it for you.

There is a fourth rule that only bites on dense codes: the more data you encode, the smaller each module gets, and the more of them a fixed-size logo swallows. If you are encoding a long URL or a full vCard, the generator tightens the warning threshold automatically.

Doing it in the generator

Open More options, then the Logo tab. You can pick one of the built-in brand marks or upload your own — PNG, JPEG or WebP up to 2 MB. Drag the size slider and watch the preview; a warning appears the moment the logo grows past the safe threshold for the current error correction level.

Your logo never leaves the browser. It is read into memory, drawn onto the code locally, and thrown away when you close the tab — nothing is uploaded to us. That is the same rule everything else on this site follows.

Which logos survive and which do not

Simple, high-contrast marks work. A single letter, a solid icon, a wordmark of three or four characters at most.

What fails is detail. A logo with thin strokes, small text or a gradient turns to mush at the size it ends up on a printed code — often 6 or 7 mm across. If your full logo has a strapline, drop the strapline. If it has a five-word company name, use the symbol on its own.

Avoid light-coloured logos on a white pad, too. The scanner is looking for contrast; a pale grey mark on white reads as an ambiguous smear rather than a clean gap.

Print takes a bite out of your margin

Everything above assumes a perfect image. A printed code has ink spread, paper texture, and whatever the laminate does to reflections. If the code is going to print, treat your on-screen result as the best case and leave more headroom than you think you need — one step down on the size slider costs you nothing visually and buys real reliability.

Print size matters here too. A logo takes the same percentage whatever the physical size, but a small printed code has less absolute room for the scanner to work with. Our print size guide has the minimums.

Test it like you mean it

Scan the finished code from about 15 cm and again from a metre away. Try it in bright daylight and in a dim room. Use both an iPhone and an Android if you can, with the built-in camera rather than a scanner app.

If it reads sometimes and not others, that is not bad luck — it is the code telling you the logo is too big. Take it down one step and test again. Intermittent now means broken later, once it is on a thousand printed flyers.

The full routine is in our pre-print testing checklist, and if something is already failing, the seven-point fix list covers the usual causes.

Add a logo to your code — the size slider and the warnings are right there.