# QR code with a logo not scanning

> A logo works up to roughly 20–25% of the code area at error-correction level H, and only in the centre. Covering a finder pattern, the timing patterns, or the format information beside the finders breaks the code regardless of error-correction level.

Source: https://useqr.app/docs/troubleshooting/qr-code-with-logo-not-scanning · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## What error correction actually buys you

| Level | Damage tolerated | Practical centre logo |
|---|---|---|
| L | ~7% | none |
| M | ~15% | up to ~10% area |
| Q | ~25% | up to ~18% area |
| H | ~30% | up to ~25% area |

Those are *theoretical* ceilings for the whole code. Real coverage should stay below them,
because print imperfection, glare and camera angle consume some of the same budget.

## The regions you must not cover

Error correction protects **data**. It does not protect the structural regions:

- **Finder patterns** — the three corner squares. Cover any part and the scanner cannot
  locate the code at all.
- **The quiet zone** — four modules of blank margin.
- **Format information** — the strip immediately beside each finder pattern, holding the
  mask and error-correction level. Damage here and the decoder unmasks incorrectly and the
  payload is irrecoverable even though every data module is perfect.
- **Timing patterns** — row 6 and column 6, the alternating lines between the finders.

A centre logo is safe because the centre is data. A logo drifting toward a corner is not.

## Why raising to H can backfire

Level H uses more of the code for redundancy, so the same payload needs a **higher version** —
more modules, each smaller at the same printed size. If the code is already near the limit of
what your printed size supports, moving M → H can make it fail even before you add the logo.

The correct order is: shorten the payload → raise error correction → add the logo → verify.

## Give the logo a quiet zone

Place the logo on a solid light panel with two or three modules of clear space around it.
A logo sitting directly on the pattern produces ambiguous partial modules at its edge, which
are worse for the decoder than cleanly missing ones.

## Verify, do not assume

Every code UseQR generates is rasterised and read back with a real decoder before you
download it. If a logo pushes it past the limit, you find out immediately rather than after
the print run. Our [validator](/validate) does the same on demand and reports the margin you
have left.

## FAQ

### How big can a logo in a QR code be?
Up to roughly 25% of the code area at error-correction level H, placed centrally. Below level Q, a logo of any meaningful size is risky.

### Can I put a logo over a corner square?
No. The corner squares are finder patterns and are not protected by error correction. Covering any part of one prevents the scanner from locating the code.

### Should I always use error-correction level H when adding a logo?
Use Q or H, but be aware that H increases the code's version, making every module smaller at the same printed size. Shorten the payload first so the version stays low.

### Why does my logo QR code scan on my phone but not on others?
You are at the edge of the margin. Different cameras, lighting and distances consume the remaining error-correction budget differently. Reduce logo coverage until there is real headroom.

## Try it

- https://useqr.app/validate
- https://useqr.app/url
