Error correction level
How much of a damaged code can still be read: L 7%, M 15%, Q 25%, H 30%.
QR codes use Reed–Solomon error correction, which lets a scanner reconstruct data from a partially damaged or obscured code. The specification (ISO/IEC 18004) defines four levels:
- L (Low) — about 7% recoverable
- M (Medium) — about 15% recoverable
- Q (Quartile) — about 25% recoverable
- H (High) — about 30% recoverable
The trade-off. Higher correction means more redundant data, which means more modules for the same content, which means a denser code. H can push a code two or three versions larger than L for identical content.
Why logos need H. A logo in the centre is deliberate damage. If it covers 20% of the code's area, you need a level that can recover at least that much. This is why a logo should force the level to H — and why the 30% figure is a ceiling rather than a target, since print wear, glare and scanning angle consume the same budget.
Practical choice. M for clean digital use, Q or H for anything printed on a surface that will be handled, outdoors, or carrying a logo.
In practice
Encoding a 30-character URL at level L produces a version 2 code, 25×25 modules. The same URL at level H needs version 4, 33×33 modules — about 74% more modules in the same printed area, so each module is meaningfully smaller.
That is the trade-off in a sentence: H tolerates more damage but makes every module smaller, and small modules are themselves a failure mode. On a business card, L or M printed with large modules often outperforms H crammed into the same space.
Questions
Should I always use the highest level?
No. H is right for a logo, an outdoor sign, or a surface that will be handled. For a clean code printed at a generous size, M is the better default — the extra modules H adds can make a code harder to scan than the damage it protects against.
Does error correction protect against the wrong destination?
No. It recovers damaged data. If the encoded URL is wrong, error correction faithfully reconstructs the wrong URL.