QR error-correction levels explained: when to use L, M, Q or H
A QR code's error-correction level decides how much of the code can be damaged or covered and still scan: L recovers about 7%, M about 15%, Q about 25% and H about 30%. Higher correction is not automatically better — it adds redundancy modules, so the code gets denser and each module gets smaller at the same physical size, which can actually hurt scanning if you then print it small. Use M for most everyday codes, raise to Q or H when you put a logo in the center or print on a surface that may get scuffed, and keep content short so the higher level doesn't make the code too dense to read.
What error correction actually does
QR codes use Reed–Solomon error correction: extra redundancy modules are baked in so a scanner can reconstruct the data even if part of the code is missing, smudged or covered. The level you pick sets how much loss it tolerates. That's why a code with a logo punched through the middle, or a slightly torn sticker, still scans — the redundancy fills in the gap.
The four levels, in plain numbers
There are four standard levels, defined in ISO/IEC 18004. The percentage is roughly how much of the code can be unreadable before it fails:
- L (Low) — ~7%. Least redundancy, smallest/coarsest code. Fine for clean digital codes scanned on screen.
- M (Medium) — ~15%. The everyday default and a good balance for most printed codes.
- Q (Quartile) — ~25%. Extra resilience for codes that might get scuffed, or that carry a small logo.
- H (High) — ~30%. Maximum resilience — the right choice when a center logo covers a meaningful chunk of the code, or for rough/industrial surfaces.
The catch: higher level means a denser code
Here's what most 'always use H' advice skips: raising the level adds modules. At a fixed physical size, more modules means each square is smaller — and smaller modules are harder to scan, especially when printed small or read from a distance. So H is not a free upgrade. If you bump to H and print the code tiny and pack in a long URL, you can end up with a code that's harder to scan than a plain M code would have been.
When to raise it — and when not to
A simple decision guide:
- Adding a center logo? Use H. The logo covers part of the code, and H's ~30% tolerance is what lets the covered center be reconstructed. (QR Cat raises the level automatically when you add a logo.)
- Printing on something that gets handled, scuffed or curved (packaging, equipment labels, wristbands)? Q or H buys a safety margin.
- Plain code, clean print, scanned up close? Stay on M. Don't pay the density tax you don't need.
- Long content printed small? Don't reach for H to compensate — shorten the URL or print larger instead. Redundancy can't fix modules that are simply too small to resolve.
Test the level you chose
Error-correction level is a trade-off, so verify the result rather than guessing. After you pick a level and size, run the code through QR Cat's scannability test — it decodes the code scaled down and at low contrast, so you'll see whether your chosen level still reads under realistic conditions or whether the added density tipped it over the edge.
Frequently asked questions
Which QR error-correction level should I use?
Use M for most codes. Raise to H when you add a center logo (it covers part of the code), and to Q or H for surfaces that may get scuffed or curved. Keep L for clean on-screen codes. Don't default to H for everything — it makes the code denser and can hurt scanning when printed small.
Does a higher error-correction level make a QR code more reliable?
Only up to a point. It tolerates more damage, but it also adds modules, so each square gets smaller at the same physical size — which can reduce reliability if you then print small or read from a distance. The right level balances damage tolerance against module size.
What error-correction level do I need for a QR code with a logo?
Use H (~30%). A center logo covers part of the data, and only the highest level reliably reconstructs the covered area. Keep the logo under about a quarter of the code area and centered. QR Cat switches to H automatically when you add a logo.
What do L, M, Q and H mean on a QR code?
They're the four error-correction levels from the ISO/IEC 18004 standard, recovering roughly 7% (L), 15% (M), 25% (Q) and 30% (H) of a damaged or covered code. Higher levels add redundancy at the cost of a denser code.