QR reliability

QR code error correction

Error correction adds redundant data so a QR code may still decode when some modules are dirty, damaged or obscured. More correction also makes the symbol denser.

Use the lowest level that suits the real environment. Increasing correction can help with limited damage, but it can also increase the number of modules and make a small printed code harder to scan.

The four levels

LevelApproximate codeword recoveryPractical starting point
L7%Clean, controlled uses where compact size matters.
M15%A balanced default for many ordinary uses.
Q25%Some expected wear, dirt or deliberate obstruction.
H30%More redundancy where damage risk justifies extra density.

These are approximate restoration rates for codewords, not a promise that the same percentage of any visible area can be covered. The figures and trade-off are described by DENSO WAVE’s QR Code documentation.

Why higher is not automatically better

The selected level changes how much redundant information the code needs. When a payload no longer fits in the same QR version, the grid grows. At a fixed printed width, each module then becomes smaller. That can offset the benefit of extra correction, especially with long URLs or poor printing.

What error correction can and cannot do

It can recover some missing or changed data. It cannot compensate reliably for a removed quiet zone, severe blur, inadequate contrast, extreme distortion or a code printed too small. The finder patterns and other functional areas also need to remain detectable.

Choosing a level

  • Start with M for an ordinary URL QR code in a clean setting.
  • Consider Q or H for controlled logo experiments or environments where limited damage is likely.
  • Consider L when payload density is the main constraint and the code will remain clean.
  • Recalculate size after changing the level.
  • Test the exact exported and printed version on real devices.