Skip to content
UseQR

Spec & internals

QR code error correction levels explained

L, M, Q and H tolerate roughly 7%, 15%, 25% and 30% damage. Higher levels cost capacity, so the same payload needs a bigger version — which means smaller modules at the same printed size. Raising the level to make a code more robust can make it harder to scan.

The four levels

Level Damage tolerated Capacity vs L Use for
L ~7% 100% Screens, maximum data in minimum size
M ~15% ~79% The default; most print work
Q ~25% ~56% Codes with a logo, moderately dirty environments
H ~30% ~43% Heavy logos, industrial labels, outdoor signage

The trade that catches people out

Higher error correction does not add robustness for free. It spends capacity on redundancy, so the same payload needs a higher version — more modules, each smaller at the same printed size.

A 200-character URL:

Level Version Modules Module size at 3 cm
L 7 45 0.67 mm
M 8 49 0.61 mm
Q 10 57 0.53 mm
H 12 65 0.46 mm

If the code is already near the limit of what your printed size supports, moving M → H makes it worse. This is the most common mistake in QR troubleshooting: the instinct is to raise error correction, and for a dense code that is backwards.

The correct order

  1. Shorten the payload. Biggest effect, no cost.
  2. Choose the error-correction level the environment actually needs.
  3. Size the code for the distance and the module floor.
  4. Verify by decoding the rendered output.

What error correction does not protect

Reed–Solomon protects the data region. It does not protect:

This is why a centre logo is safe at Q or H and a corner logo is not at any level.

Erasures versus errors

Reed–Solomon corrects erasures — damage in a known location — at twice the rate of errors, where the decoder does not know which symbols are wrong. A clean logo covering a region reads as an erasure; scattered print noise reads as errors. That is why a solid, obviously-covered patch is more survivable than the same area of speckle.

FAQ

Which error correction level should I use?

M for most printed work. Q or H only when adding a logo or printing on something that will be scuffed, wet or faded. L for screens where you want the smallest possible code.

Does higher error correction make a QR code easier to scan?

Not necessarily. It increases the version, making every module smaller at the same printed size. For a dense code that makes scanning harder, not easier.

How much of a QR code can be damaged?

Roughly 7% at level L, 15% at M, 25% at Q and 30% at H — but only in the data region. Damage to the corner finder patterns or the quiet zone is not recoverable at any level.

Why is a logo safer than random damage?

A logo covers a known contiguous region, which Reed–Solomon treats as erasures and corrects at twice the rate of scattered errors.

Try it — free, no signup