All articles
QR Codesbeginner6 min read

How to Make a QR Code with a Logo (Without Breaking It)

A plain black-and-white QR code says "scan me if you dare." A QR code with your logo in the middle says who's asking, and that difference shows up in scan rates. People scan codes they trust, and a recognizable logo is the fastest trust signal a printed code can carry.

The catch: a logo literally covers part of the code's data. Done casually, that produces a code that scans on your phone during testing and fails on an older phone in bad lighting at the exact moment it matters. This guide explains why logos work at all, and the rules that keep a logo'd code reliable.

Why covering part of a QR code is fine (up to a point)

QR codes were designed for warehouses and factory floors, where labels get scratched, smudged, and torn. So the format includes error correction: the data is stored redundantly, using Reed-Solomon codes, the same math that let scratched CDs keep playing.

Every QR code is generated at one of four error correction levels:

LevelRecoverable damageTypical use
L~7%Clean digital display, maximum density
M~15%General print use
Q~25%Harsher environments
H~30%Logos, or codes expecting damage

A centered logo is simply deliberate damage. Generate the code at level H, keep the logo inside the recoverable budget, and scanners reconstruct the covered data as if it weren't covered at all. (For the full mechanics of how encoding and error correction work, see how barcodes actually work.)

The rules that keep a logo'd code scannable

1. Use error correction level H. Non-negotiable for logos. Any generator that adds logos should do this automatically; SunriseQR's does.

2. Keep the logo under about 20% of the code's area. Level H tolerates 30% damage, but your logo should not spend the whole budget, because the real world will spend the rest: glare, ink spread, folds, scratches, camera blur. Staying near 20% including the margin leaves room for reality.

3. Give the logo a clear margin. Don't lay the logo directly over modules. A small white (or background-colored) buffer zone around the logo makes the boundary between "logo" and "data" crisp, which scanners handle much better than a logo bleeding into half-covered squares.

4. Center it, and never touch the corners. The three big squares in the corners are finder patterns, how a scanner finds the code and works out its orientation. They are not covered by the error correction budget in any useful sense: obscure one and the code often won't even be recognized as a QR code. The small square near the fourth corner (the alignment pattern) matters too. The center is the safe zone; that's why every professionally logo'd code you've seen puts the logo there.

5. Keep contrast high everywhere else. A logo plus pale-grey-on-white modules stacks two risks. If you're customizing colors as well, keep dark modules genuinely dark on a light background. Dark mode inversions (light modules on dark) scan noticeably worse on some devices; if you want a dark look, keep the code itself dark-on-light inside a dark surround.

6. Test like a pessimist. Before printing a thousand of anything: scan the final artwork at actual print size, from a distance, at an angle, in dim light, with both an iPhone and an Android, ideally including one old phone. Ten seconds of paranoia beats a reprint. Our QR code printing guide covers sizing and materials in detail.

Shortcuts that do the math for you

Doing this manually (level H, 20% budget, clear zone, centered placement) is exactly the kind of thing software should handle. The SunriseQR code designer does: upload a logo and it's resized, centered, given a clear zone, and the code is generated at level H automatically. You can also pick dot and corner styles and brand colors, with a live preview that stays within scannable bounds.

Two related notes:

  • Making the code editable matters more than making it pretty. If the code is going to print, make it a dynamic code so the destination stays changeable. A beautiful code pointing at a dead URL is still a dead code. (Why editable codes work.)
  • Retail packaging plays by stricter rules. A code that also needs to scan at a store checkout is a GS1 Digital Link code, and for those we recommend staying conservative with styling, since it has to satisfy commercial scanner hardware, not just phone cameras.

The short version

Level H error correction, logo under ~20% of the area with a clear margin, dead center, corners untouched, high contrast, test on real phones. Follow those and a logo makes your code better at its actual job: convincing a human it's worth scanning.

Try it with your logo, free.