QR.technology Free · Private · No sign-up
// learn · reliability

QR code error correction levels

Error correction is the redundancy that lets a code scan even when damaged. QR codes offer four levels — L, M, Q, and H — recovering 7%, 15%, 25%, and 30% of the data. Higher means tougher, but denser. Here's how to choose.

Reading time ~5 minReliability

What error correction does

QR codes use Reed-Solomon error correction: extra codewords are encoded alongside your data so a scanner can reconstruct the original message even when part of the code is unreadable. Damage, dirt, a printed logo, low contrast, or a crease can all obscure modules — error correction is what lets the code survive them. It's the same mathematical principle that protects CDs and spacecraft telemetry.

The four levels

LevelRecoveryBest for
L — Low~7%Clean digital use, maximum data, pristine printing
M — Medium~15%The default; a good all-round balance
Q — Quartile~25%Light branding, busier surfaces, industrial use
H — High~30%Logos over the code, harsh conditions, small print

The percentage is roughly how much of the code's codewords can be lost while still recovering the data. At level H, nearly a third of the code can be obscured and it will often still scan — which is exactly why codes with a centered logo use H.

The trade-off: capacity and density

Redundancy isn't free. Higher error correction means more codewords for the same message, so either the code holds less data at a given size, or it grows to a higher version with smaller modules to fit. Smaller modules are harder to scan from a distance or on a low-resolution print.

Don't max it out reflexively

Level H feels safest but makes a denser code that can actually scan worse at small sizes or long distances. Use the lowest level that meets your real-world conditions. For a clean link printed sharply, M is plenty.

How recovery works in practice

The recovery percentages aren't a vague "tolerates damage" rating — they come from the structure of the code. Your data and the error-correction codewords are split into blocks, and Reed-Solomon math can rebuild a certain number of missing or corrupted codewords per block. The higher the level, the more correction codewords accompany each block of data, so more of the code can be lost and still mathematically recovered.

Two practical consequences follow:

  • Damage spread across the code is fine; a single huge obliteration may not be. Recovery is per-block, so a logo concentrated in one area is handled better than the same area of loss plus scattered damage elsewhere.
  • Error correction can't rescue a code that was never readable. If contrast is too low or modules are too small to resolve, there's no clean signal for the math to correct. Redundancy assumes the scanner can read most of the code.

Which level to choose

  • L — only when you need maximum data in minimum space and printing is flawless. Rarely the right pick for print.
  • M — the sensible default for most links and clean print. Balances size and resilience.
  • Q — step up when the code sits on packaging, fabric, or anything that might smudge or flex, or when you tint the dots.
  • H — use when placing a logo over the center, printing very small, or expecting rough handling. Pair with generous size.

Whatever you choose, keep strong contrast and a clear quiet zone — error correction compensates for damage, not for a fundamentally low-contrast or cramped design. See design best practices.

Try the levels yourself

Switch between L, M, Q, and H in the generator and watch the module count change as redundancy is added.

Open the generator

Frequently asked questions

What do L, M, Q, and H mean?

They're the four error-correction levels, recovering about 7%, 15%, 25%, and 30% of the code respectively. Higher levels tolerate more damage but make a denser code.

Which error correction level should I use?

M is the best default for clean printed links. Step up to Q or H if you add a logo, tint the code, print very small, or expect wear. Use L only for maximum data in perfect conditions.

Does higher error correction always scan better?

No. It tolerates more damage, but the denser pattern can scan worse at small sizes or long distances. Pick the lowest level that fits your conditions.

Why does adding a logo need level H?

A centered logo covers data modules. Level H can recover up to about 30% of the code, so it can absorb the loss the logo causes — provided the logo isn't too large.