How to add a logo to a QR code (without breaking it)
You can cover roughly the middle 20–25% of a QR code with a logo, because error correction stores enough redundancy to rebuild the hidden modules — past that, scanners start failing.
6 min read · Updated
Nothing about a QR code reserves space for a logo. The middle of the grid is ordinary data, and covering it destroys that data — the code keeps working only because error correction rebuilds what you hid. Understand that budget and a branded code is safe; ignore it and you print thousands of cards that fail in dim light.
How much can you cover?
Error correction level H recovers roughly 30% of the code. That is the theoretical ceiling, not a target: some of it is spent on real-world damage such as print noise, glare, creases and a camera at an angle. Leave headroom.
| Logo covers | Error correction | Verdict |
|---|---|---|
| Up to 15% of width | M or Q | Safe almost anywhere |
| 15–25% of width | H | Fine on paper, test before a big run |
| Over 25% of width | H | Expect failures on worn or badly lit copies |
Swipe the table to see all columns.
Percentages here are of the code's width, not its area. A logo one quarter as wide as the code already covers about 6% of its surface, and that is roughly where a conservative design should stop.
Do it in the generator
- Build the code first in the generator and get the content final. Changing the link afterwards regenerates the whole grid.
- Upload the logo. Error correction is raised automatically, and the modules underneath are excavated rather than merely painted over — so the scanner sees a clean hole instead of ambiguous grey.
- Resize the logo down until the live scan self-test badge stays green, then stop. The badge decodes the rendered preview in your browser, so it is a real read, not a guess.
- Export SVG for print; PNG only for screens.
Design rules that decide whether it scans
- Centre it. The middle is the safest place to lose modules. A logo over a corner can destroy a finder pattern, and no amount of error correction recovers from that.
- Give it a solid backing. A small padded square or circle of background colour behind the logo reads far better than a transparent logo sitting on top of modules.
- Keep the logo simple. At 2 cm printed, a detailed wordmark is mush. A monogram or symbol survives; a full lockup does not.
- Keep contrast strong. Dark modules on a light background. Inverted codes — light on dark — are read by fewer scanners, and a logo makes that worse.
- Shorten the content. A shorter link means a lower version and bigger modules, so each covered module matters less. This helps more than any other tweak.
Test on the thing you will actually ship
The self-test in the browser tells you the design is decodable in ideal conditions. Before a print run, check the real artefact: print one at final size, scan it with an old phone and a new one, in bright light and in a dim room, and from a bit further than you expect people to stand. If any of those fail, shrink the logo before you change anything else.
If a code that scanned on screen fails on paper, the scanning checklist isolates the cause quickly.
Beyond the logo
A logo is not the only way to look like yourself. Module shapes, per-eye colours, a brand gradient and a captioned frame all change the character of a code without removing a single module of data — they are strictly safer than covering the middle. If you want to go further, halftone QR art blends an entire picture into the grid.