A logo in the center of a QR code is the classic branding move — and the classic scan-killer when done wrong. The good news: the math is well understood. Error correction is deliberately designed to tolerate damage, and a centered overlay is exactly the damage pattern it can survive — if you respect the size, correction, and contrast rules.
How it works: error correction as insurance
QR codes store redundant data so scanners can reconstruct damaged patterns. At error correction level H, a scanner can recover up to 30% of the code's modules. A centered logo covers a contiguous region — which error correction handles surprisingly well, because QR's Reed–Solomon coding distributes redundancy across the whole pattern. The rules below keep the covered region inside the recoverable budget.
The three rules
1. Size: ≤15% of code width. The logo should cover at most ~15% of the code's width — roughly a quarter of the central area. Bigger logos push the covered region past what level H can reconstruct:
code width 100px → logo ≤ 15px
code width 512px → logo ≤ 76px
code width 1024px → logo ≤ 153px
2. Correction: level H. With an overlay, error correction jumps to H (30%). This makes the pattern denser — which means the minimum print size grows. A logo'd code at 2cm won't scan like a clean code at 2cm; test the actual print.
3. Contrast: light plate behind the logo. The logo's own colors will collide with module colors. A white (or brand-tinted light) circular or rounded plate behind the logo keeps the boundary legible and gives scanners a clean edge to read around.
What to avoid
| Anti-pattern | Failure mode |
|---|---|
| Logo > 20% of width | Modules unrecoverable; code fails on older scanners |
| Level M or L with logo | Recovery budget too small for the overlay |
| Logo without plate | Logo edges merge with modules; boundary unreadable |
| Colored modules (light blue, yellow) | Contrast falls below scanner threshold |
| Cropping the quiet zone | Scanner can't find the code at all |
The workflow that never ships a broken code
- Generate the code at the final size with the QR API (level H where available).
- Overlay the logo + plate in the design tool, respecting the 15% rule.
- Print it for real — screen proofs lie; ink and paper don't.
- Test with 2–3 phones, including an older Android camera app, at the real viewing distance.
- Keep a clean (no-logo) variant in the asset library as the fallback.
# base code at print size
curl "https://yas.sh/api/v1/qr?url=https://go.yourbrand.com/launch&size=1024&format=png" -o code-clean.png
When to skip the logo entirely
- Tiny formats (business cards, stickers < 2cm) — the logo eats too much of the budget.
- High-volume print with inconsistent quality (newspapers, uncoated stock).
- Codes expected to last years — the more damage tolerance, the better.
In those cases, put the brand mark next to the code instead of inside it — the business QR guide shows the layout pattern.
How error correction makes a logo safe
A QR code carries its data across modules, but it also carries redundancy in the form of error-correction levels. The levels — Low (~7%), Medium (~15%), Quartile (~25%), and High (~30%) — determine how much of the code can be damaged or covered while the code still scans. This redundancy is exactly what lets you place a logo in the center of the code: the logo obscures modules that the error correction can reconstruct. For a center logo, use High error correction so the code tolerates the obstruction comfortably rather than scanning unreliably.
The safe logo size and placement
Not every size works. The guidance that keeps codes scannable:
- Keep the logo within the center 15–25% of the code's area. Larger logos cover more of the essential finder and timing patterns and push the code toward failure.
- Do not cover the three corner finder squares. These are what the scanner locks onto; anything touching them breaks scanning almost immediately.
- Keep a quiet margin around the whole code. A clear border (roughly 4 modules) lets scanners find the edges cleanly.
- Use a high-contrast logo that still reads as a shape; a faint, low-contrast logo confuses both the human eye and the scanner.
Staying inside these bounds means the logo reads as branding to a person and as harmless redundancy to a scanner.
Testing before you print
No amount of theory substitutes for a real test at final size. Generate the code, embed your logo, print it at the actual size and material you will use, and scan it with a couple of different phones in normal lighting. Pay attention to print factors — ink bleeding, low contrast, glossy reflections, small size — because these degrade scanability in ways the on-screen test cannot show. The QR print design guide covers these physical constraints in more depth. Testing the final artifact before ordering a large print run is the cheapest insurance you can buy.
Choosing an effective logo style
Flat, high-contrast vector logos embed most cleanly; very detailed or low-contrast artwork scans worse. If your logo is complex, use a simplified lockup or mark in the center rather than the full detailed version. The goal is a mark a person recognizes and a scanner ignores, which means keeping it simple, high-contrast, and inside the safe center region.
The takeaway
A logo makes a QR code brandable without breaking it, provided you respect the rules: high error correction, a logo kept to the safe central 15–25%, clean corner finders, a quiet margin, and high contrast. Then always test the final printed artifact at real size before a large run. Following these bounds lets your code look on-brand while still scanning reliably for every customer.
Conclusion
Logo overlays are safe when they respect three numbers: ~15% of width, level H correction, and a light plate behind the mark. Respect the print test and the scan test, and the branded code works everywhere a clean code does. Generate the base at the QR endpoint, overlay in your design tool, and verify on paper before you print the run.
