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 coversError correctionVerdict
Up to 15% of widthM or QSafe almost anywhere
15–25% of widthHFine on paper, test before a big run
Over 25% of widthHExpect 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

  1. Build the code first in the generator and get the content final. Changing the link afterwards regenerates the whole grid.
  2. 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.
  3. 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.
  4. 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.