QR codes with a logo
Last updated 16 September 2026
Putting your logo in the middle of a QR code works, and it looks better than a bare black square. It also reduces the code's tolerance for damage, so there are limits worth respecting.
Why it works at all
QR codes carry redundancy. A portion of the data is repeated, so the scanner can rebuild what it cannot read. That redundancy is what makes a logo possible: you cover part of the code, and the error correction fills in the gap.
This is why the generator here switches to high error correction the moment you attach a logo. There is no point offering a logo option that produces codes that fail to scan.
How big can the logo be
As a rule, keep the logo under about a quarter of the code width. At a quarter, you are using a comfortable margin of the available redundancy. At a third, you are spending most of it. Past that, the code starts failing depending on lighting and camera quality, which is a miserable class of bug because it works on your phone and not on someone else's.
The generator caps the logo at roughly 26 percent of the width and pads it with the background colour. The padding matters as much as the size: a logo sitting directly against module edges blurs the boundary the scanner depends on.
What makes a good logo here
- Simple. A mark with fine detail turns to noise when printed at five millimetres.
- Square-ish. Wide and tall logos get awkward when centred.
- High contrast against the code. A dark logo on a light code, or light on dark.
- Transparent or matching background. A logo with its own white box on a coloured code looks like an accident.
A wordmark is usually a poor choice, because text at that size is unreadable anyway and its fine strokes hurt scanning. A symbol or a single letter works better.
Colour combinations
Inverted codes, light modules on a dark background, look striking and scan badly. Many scanners assume dark modules on light. Some phone cameras cope, plenty of scanner apps do not, and you cannot tell which one a given person has.
The generator here enforces a minimum contrast ratio and refuses combinations below it. That is deliberate. A beautiful code that does not scan is worse than a plain one that does.
If you want colour, keep one side very dark and the other very light. Deep navy on off-white reads as designed rather than default, and still scans reliably.
Test before you commit
With a logo, testing is not optional. Do at least this much:
- Scan the printed proof, not the screen.
- Use an older phone as well as a new one.
- Try it at the distance it will actually be scanned from.
- Try it in the lighting it will actually be seen in.
If it fails any of those, shrink the logo before you touch anything else. That is nearly always the cause.
When to skip the logo entirely
If the code will be small, if the print quality is unknown, or if the code is going somewhere it must work first time, leave the logo off. A plain code at 2cm will scan. A logo code at 2cm is a gamble. Save the branding for places where you control the print.