How to add a logo to a QR code without breaking the scan
A branded QR code gets scanned more often than a plain one, because people trust a mark they recognise more than an anonymous grid. It also fails more often, because every design change eats into the redundancy the format relies on. The good news is that the limits are precise and knowable: get error correction, coverage and contrast right and a logo code is every bit as reliable as a plain one.
Key takeaways
- Error correction level H recovers about 30% of a damaged code — that redundancy is what makes a centre logo possible.
- Keep the logo under roughly 20% of the total code area, centred, with a small light margin around it.
- Never cover a finder pattern: the three large corner squares are how a camera locates the code at all.
- Colour is free as long as luminance contrast stays high; hue is irrelevant to the decoder.
- Always verify the final artwork with a real scanner at final printed size before the run.
Why a logo works at all: error correction
QR codes use Reed–Solomon error correction, the same family of maths that keeps scratched CDs playable. The encoder deliberately adds redundant data so the decoder can reconstruct missing modules. There are four levels: L recovers about 7% of the code, M about 15%, Q about 25% and H about 30%.
A centre logo is simply deliberate damage. You are destroying modules and relying on the redundancy to rebuild them. That is why every logo code should be generated at level H — it buys you the largest possible budget for destruction.
The trade-off is density. Higher error correction means more modules for the same content, so the pattern gets finer and each module gets smaller at a given print size. This is why the two rules interact: an H-level code with a logo needs to be printed slightly larger than a plain M-level code carrying the same URL. Shorten the encoded string wherever you can — a dynamic short link instead of a long tracked URL is the single most effective way to keep a branded code sparse and robust.
| Level | Recovery | Use for |
|---|---|---|
| L | ~7% | Screens only, never with a logo |
| M | ~15% | Plain codes, clean print |
| Q | ~25% | Rough stock, small logos, laminated surfaces |
| H | ~30% | Any centre logo, packaging, outdoor |
The coverage rule and where the logo can sit
Twenty per cent of total code area is the working ceiling, and it is comfortably inside the 30% that level H theoretically recovers. The gap is intentional: real-world print adds its own damage through ink spread, dust, scuffing and imperfect camera focus, and you want the redundancy budget to absorb that too rather than spending all of it on the logo.
Position is not negotiable. The logo goes in the centre, because the centre is the least structurally important region of the pattern. The three large squares in the top-left, top-right and bottom-left corners are finder patterns — the camera uses them to locate and orient the code before decoding anything. Cover any part of one and the scan does not fail gracefully, it fails completely. The smaller alignment squares and the timing lines that run between finders are similarly load-bearing.
Give the logo a small light-coloured margin — two or three modules — separating it from the surrounding pattern. It reads as a deliberate design element rather than a smudge, and it prevents the decoder from misinterpreting logo edges as modules.
- Centre only — never over a corner finder pattern.
- Cap coverage at about 20% of the code area.
- Add a 2–3 module light margin around the logo.
- Prefer a simple monochrome or two-colour mark over a detailed full-colour one.
- If the logo is wide, use a square crop or a monogram instead of the full lockup.
Colour, gradients and module shapes
Decoders convert the image to greyscale before doing anything else, so hue carries no information at all. What matters is luminance contrast between the pattern and the background. A saturated brand violet on near-white has enormous contrast and scans perfectly; a mid-tone teal on a warm grey may look far more subtle and be entirely unreadable.
Gradients are safe when they run between two dark values — deep violet into deep blue, for example. They become dangerous when one end of the gradient approaches the background luminance, because the modules in that region effectively disappear. Test the light end, not the average.
Rounded modules and dot styles are decorative reshaping of each cell and are widely supported, but they shrink the effective ink area of every module. Circular dots in particular can under-print on absorbent stock. If you are using a dot style on uncoated paper, enlarge the code by 10–15% over what a square-module version would need, and keep error correction at H.
- Judge colour by luminance contrast, not by how different the hues look.
- Gradients must stay dark end-to-end.
- Do not invert light-on-dark on anything printed at volume.
- Dot and rounded styles need slightly more size on absorbent stock.
- Keep the finder patterns in a single solid brand colour for the cleanest look.
Frames, calls to action and the pre-print test
A frame with a short instruction reliably lifts scan rates, because it answers the two questions a passer-by has: is this for me, and what happens if I scan it. 'Scan for the menu' or 'Scan to book' beats a bare code every time. Keep the text outside the quiet zone, not inside it.
Before any run, do a three-part test. First, export the final artwork at the final printed size and scan it on screen with two different phones. Second, print a proof on the actual stock with the actual finish and scan that in bright, normal and dim light. Third, read the decoded string rather than following the link, to confirm no stale artwork slipped into the layout.
For volume work, keep a record of which error correction level, size and finish combination passed for each job. Over a handful of jobs that log becomes a house standard, and the guesswork disappears from every future brief.
- Add a short verb-led call to action outside the quiet zone.
- Scan the export at final size on two handsets before printing.
- Scan a physical proof on the real stock, in three lighting conditions.
- Read the decoded string, do not just follow the redirect.
- Record the passing spec so the next job starts from a known-good baseline.
Frequently asked questions
Will adding a logo stop my QR code from working?
Not if you generate at error correction level H, centre the logo, and keep it under about 20% of the code area. Covering a corner finder pattern will break it completely.
What error correction level should a logo QR code use?
Level H, which recovers roughly 30% of a damaged code. That redundancy is what lets the decoder reconstruct the modules hidden behind the logo, with headroom left for print imperfections.
Can a QR code be any colour?
Any colour with strong luminance contrast against its background. Decoders work in greyscale, so a dark saturated brand colour on a light field is ideal, while mid-tone on mid-tone fails regardless of how different the hues appear.
Are rounded or dot-style QR codes less reliable?
Slightly, because each module has less ink area. They are fine on coated stock and screens; on uncoated or absorbent paper, enlarge the code by 10–15% and keep error correction at H.
How large should a branded QR code be printed?
Use the 10:1 rule — about one tenth of the scan distance — then add 10–15% because a logo and level-H encoding make the pattern denser than a plain code.
Generate a dynamic QR code in under a minute
Branded design studio, editable destinations and real-time scan analytics in one workspace.
Start free