Skip to content
kizmo

QR code error correction levels explained (L, M, Q, H)

Updated · 4 min read

Short answer

Error correction lets a scanner rebuild a damaged or covered part of a code: level L recovers about 7%, M 15%, Q 25% and H 30%. Higher levels make the code denser, so use M by default and H when you add a logo or print for rough environments.

QR codes use Reed-Solomon error correction, the same family of maths used on CDs and in space communication. Part of every code is redundant data that lets a scanner reconstruct missing pieces.

Level Recovers Use it for
L ~7% Clean digital screens, very small prints where density matters
M ~15% The sensible default for print
Q ~25% Outdoor signs, industrial labels
H ~30% Codes with a logo in the centre

A logo does not "sit on top" of a working code. It destroys the modules underneath, and error correction rebuilds them. That is why Kizmo switches to H automatically when you add a logo and warns you if the logo covers more than the level can safely recover.