March 25, 20263 min read

QR Code Error Correction Explained — L, M, Q, and H Levels

Understand QR code error correction levels L, M, Q, and H. Learn which level to choose for logos, print, outdoor, and digital use.

error correction qr code technical reliability guide
Ad 336x280

Error correction is what makes QR codes resilient. A scratched, partially covered, or logo-overlaid QR code can still scan perfectly — if you chose the right error correction level. Here's how it works.

The Four Levels

QR codes use Reed-Solomon error correction, the same algorithm used in CDs and DVDs. It adds redundant data so the original content can be reconstructed even when part of the code is unreadable.

LevelNameRecovery CapacityModule Overhead
LLow7% of data recoverableSmallest code size
MMedium15% of data recoverableDefault in most generators
QQuartile25% of data recoverableNoticeably larger
HHigh30% of data recoverableLargest code size
"Recovery capacity" means the percentage of modules that can be damaged, obscured, or missing while the code still scans successfully.

Which Level to Choose

ScenarioRecommended LevelWhy
Digital screen displayLClean environment, no physical damage risk
Standard print (flyer, card)MHandles minor print imperfections
Adding a small logo (under 10%)M or QLogo covers some modules
Adding a larger logo (10-20%)HNeed maximum recovery to compensate
Outdoor signageQ or HWeather, dirt, UV fading
Industrial/warehouseHDust, scratches, harsh conditions
Maximum data density neededLFewest redundant modules = most compact
QRMax defaults to M and automatically switches to H when you add a logo overlay.

The Size Tradeoff

Higher error correction = more redundant modules = a physically larger QR code for the same data. Here's a concrete example with a 40-character URL:

LevelVersionModulesRelative Size
L3 (29x29)841Baseline
M4 (33x33)1,089+29%
Q5 (37x37)1,369+63%
H6 (41x41)1,681+100%
This is why using dynamic QR codes matters for print — the short redirect URL requires fewer modules, leaving more room for error correction without bloating the code.

How Reed-Solomon Works (Simplified)

The QR encoder treats data as a polynomial and divides it by a generator polynomial. The remainder becomes the error correction codewords. When a scanner reads the code, it performs the same polynomial division. If the remainder doesn't match, the algorithm can locate and correct errors up to the capacity of the chosen level.

You don't need to understand the math to use QR codes — just know that higher levels sacrifice data density for resilience.

Can I change error correction after creating a code?

No. Error correction is built into the QR pattern during generation. Changing the level means generating a new code entirely.

Does error correction affect scan speed?

Marginally. The scanner needs slightly more processing time for higher correction levels, but on modern phones the difference is imperceptible (milliseconds).

What happens if damage exceeds the correction capacity?

The scanner simply fails to read the code. There's no partial reading or garbled output — QR error correction is all-or-nothing.

Ad 728x90