How to Add a Logo to a QR Code Without Breaking It
A QR code with your logo in the middle looks more professional, builds brand recognition, and reassures people that the code is legitimate. It's also one of the easiest ways to make a QR code completely unscannable. Here's how to do it right.
The trick to adding a logo to a QR code is understanding why it works at all. QR codes were designed in the early 1990s for scanning damaged parts in Toyota factories. The engineers who built them assumed the codes would get smudged, scratched, dented, and partially obscured by grease. So they built in a feature called error correction — the ability to reconstruct the missing data from what's still readable.
Adding a logo is essentially deliberate damage. You're covering up part of the code on purpose. Whether the code still works comes down to whether you've left enough error correction headroom for the scanner to fill in what you've blocked.
Set the error correction level before you generate
Every QR code has one of four error correction levels baked into it at the moment it's created. You cannot change it afterwards. If you generate a code at the lowest setting and then try to drop a logo over the center, no amount of editing software will save you. The code's recovery ceiling was set when it was generated.
The four levels are usually labeled L, M, Q, and H, sometimes shown as Low, Medium, Quartile, and High. The percentages refer to how much of the code can be obscured or damaged while remaining readable.
- L (Low) — about 7% recovery. No logo. Save this for codes that will be displayed clean and never get covered.
- M (Medium) — about 15% recovery. A very small logo, maybe a single letter monogram, in a high-contrast situation.
- Q (Quartile) — about 25% recovery. A reasonably sized logo for codes that will be scanned at close range in good light.
- H (High) — about 30% recovery. The right setting for any logo you actually want people to see. Always use this when adding branding.
The cost of using H instead of L is that the QR code becomes slightly more visually dense — more squares, packed tighter, to accommodate the redundant data. For codes you're going to print at any reasonable size, that density difference is invisible to the human eye and irrelevant to scanners. There is essentially no reason not to default to H whenever a logo is involved.
How big can the logo actually be?
The conservative guideline is that a logo should cover no more than 20 to 25 percent of the QR code's surface area, even at error correction level H. The 30 percent recovery figure is the absolute ceiling, and you don't want to operate at the ceiling — you want to leave some margin for the scanner's own degradation, like blurry phone cameras, low light, or angled scans.
In practical terms, if your QR code is 1000 pixels square, your logo should fit inside a roughly 220 to 250 pixel square in the center. Any bigger and you start trading off scan reliability for visual presence.
It's also worth noting that the logo doesn't have to be square. A horizontal logo, a circular badge, or a single icon can all work — what matters is the total area covered, not the shape.
Keep the logo in the center
This part isn't aesthetic preference, it's structural. QR codes have three large square markers in the corners (top-left, top-right, bottom-left) that scanners use to find and orient the code. There are also smaller alignment patterns scattered through the body of larger codes. Cover any of these and the scanner can't lock on to the code at all — it doesn't matter how much error correction you have because the code never gets read in the first place.
The center of the code is the safest place for a logo because it's the area least likely to contain critical orientation markers. Stay centered, stay within the size budget, and the math works out.
Contrast matters more than you think
QR scanners read patterns of light and dark. They don't care about color — they care about luminance. A dark blue QR code on a white background works fine. A pastel pink code on a cream background often won't scan even though it's visually distinct to a human eye, because there isn't enough luminance contrast for the camera to reliably distinguish modules.
The same applies to your logo. If your logo is full color, place it on a solid white or solid background-colored square so the camera doesn't try to interpret the logo's edges as code modules. A logo that fades into the QR pattern at the edges is asking for misreads. A logo with a clean, solid backing plate stays out of the scanner's way.
The actual workflow
Once you've set error correction to H and generated your code, the cleanest workflow uses vector software, but you can do it with raster tools too if that's what you have.
Using SVG (recommended)
- Generate your QR code as SVG with error correction set to H.
- Open the SVG in Illustrator, Inkscape, Figma, or Affinity Designer.
- Place your logo on a new layer, centered horizontally and vertically over the QR code.
- If your logo isn't already on a solid background, draw a white (or background-color) rectangle behind it slightly larger than the logo itself, with maybe 4-8 pixels of padding around it.
- Resize the logo + backing plate so it fits within roughly 22% of the QR code's area.
- Export as PNG for digital use, or keep as SVG for print.
Using PNG
- Generate your QR code as a high-resolution PNG (at least 1000px square) with error correction set to H.
- Open the PNG in any image editor — Photoshop, GIMP, Photopea, even Preview on macOS.
- Add your logo as a new layer centered on the canvas.
- Add a solid-color rectangle layer between the QR code and your logo if your logo isn't already on a clean background.
- Flatten and export.
Always test before you print
This is the step that gets skipped and shouldn't. Before you commit a logo'd QR code to anything you can't undo — printed flyers, packaging, signage, business cards — scan it. Scan it with multiple phones if you can, in different lighting, from different angles, at the size you'll actually be using.
The most common failure mode isn't that the code doesn't scan at all. It's that it scans 80% of the time and fails 20% of the time depending on conditions. That's a deeply frustrating problem to discover after you've printed five thousand business cards. A two-minute test catches it before it costs you anything.
What scan-failure usually means
If your logo'd QR code refuses to scan or scans inconsistently, the cause is almost always one of four things:
- Error correction was set too low at generation. The most common mistake. There's no fix except to regenerate at level H and rebuild.
- The logo is too big. Shrink it. The visual presence you lose is less than the scan reliability you gain.
- The logo isn't centered, or is overlapping a corner marker or alignment pattern. Recenter it.
- Insufficient contrast between the logo and the surrounding code. Add a clean white backing plate behind the logo.
Get those four things right and a logo'd QR code is no harder to scan than a plain one. Get any of them wrong and even the cleanest design will fail in the field.
Generate a logo-ready QR code
Set error correction to Max (H) before downloading the SVG, then add your logo in any vector editor.
Open the Generator →