qr-code-build

Guide

QR code error correction levels

Four levels, one trade-off: resilience against density. Choosing well is the difference between a label that survives a warehouse and one that does not.

Short answer

QR codes have four error correction levels. L recovers about 7% of a damaged code, M about 15%, Q about 25% and H about 30%. Higher levels add redundant data, which makes the grid denser and requires a larger print at the same module size.

The four levels

What each one costs and buys

LevelRecoverableSize costUse for
L~7%Smallest codeScreens, clean environments, very long payloads
M~15%+10% modulesGeneral print — the sensible default
Q~25%+25% modulesOutdoor, industrial, packaging, badges
H~30%+35% modulesLogo overlays, harsh environments, labels that get damaged

The size cost is not linear and depends on the payload. A short URL at level H may still fit in the same version as level L; a long vCard will jump two or three versions. Watch the version indicator in the readout as you switch levels.

Choosing

A decision table by context

ContextLevelReason
Website or emailL or MNo physical damage possible
Flyer, menu, brochureMHandled but not abused
Business cardMDensity matters more at small sizes
Outdoor board or signQWeather, fading, partial obstruction
Product packagingQHandling, scuffing, transit damage
Code with a centre logoHDeliberate data loss needs headroom
Industrial or laboratory labelHChemicals, abrasion, extreme conditions
Event badgeQCreasing and wear on a lanyard
Very long payload at small sizeLOnly if the environment is benign
Misconceptions

Three things the percentages do not mean

  1. It is not a damage budget you can spend fully. Level H survives about 30% loss under good conditions, but printing, lighting and angle have already consumed some of that before the first scratch. Leave margin.
  2. It does not protect the finder patterns. The three corner squares carry no error correction at all. Damage one and the code becomes unfindable regardless of level.
  3. Higher is not always better. A level H code has more modules, so at the same printed size each module is smaller — and small modules fail for their own reasons. On a business card, level M at 25 mm often outperforms level H at 25 mm.
Mechanism

How the redundancy is arranged

Error correction codewords are generated per block using Reed–Solomon arithmetic, then the blocks are interleaved across the whole grid rather than stored contiguously. That interleaving is what makes localised damage survivable: a stain covering 20% of the area damages roughly 20% of every block, rather than destroying one block outright.

It also explains a common observation — that codes often survive damage well beyond their rated percentage in one small area, but fail from scattered damage that looks less severe. Distribution matters as much as quantity.

Questions

Frequently asked

Which error correction level should I use?
M for general print, Q for outdoor and packaging, H when a logo covers part of the code. L only for screens or very long payloads in benign conditions.
Does higher error correction make the code bigger?
It adds modules, so at a fixed printed size each module is smaller. Whether the physical code needs to be bigger depends on the payload length too.
How much of a QR code can be damaged?
Up to about 30% at level H, provided the damage does not cover a corner finder pattern, which carries no error correction.
Why does my level H code with a logo still fail?
The logo is probably too large or off-centre, or printing has already consumed part of the redundancy. Shrink the logo below 25% and centre it.

Last reviewed 24 August 2026 · Written and reviewed by the QR Code Builder team