Error Correction Levels, and Why Your Logo Forces Level H
Error correction is the redundancy that lets a scuffed code still scan. Understanding it explains most of the rules the generator imposes on you.
What error correction actually does
QR codes use Reed–Solomon coding, the same family of error correction used on CDs and in deep-space transmission. Extra data is mixed into the pattern so a decoder can reconstruct the original payload even when part of it is unreadable.
There are four levels. L recovers roughly 7% of the symbol, M about 15%, Q about 25%, and H about 30%. Higher recovery means more redundant data, which means more modules, which means a denser code that has to be printed larger to stay reliable.
Why a centre logo changes the level
A logo in the middle of a code is not decoration sitting on top of the pattern — it covers data modules. The scanner reads what it can and reconstructs the rest from the redundancy, which only works if the redundancy is there to begin with.
A centre badge covers roughly 6% of the symbol area, comfortably inside what Q or H can recover and outside what L reliably can. That is why QrZeo raises the level to H automatically when you add a logo, and locks the other options while it is present. The alternative is a code that looks right on screen and fails on a printed page, which you would discover at the worst possible moment.
Picking a level deliberately
Medium is the sensible default and what you get unless something else forces a change.
- Level M — screens, clean print, controlled environments. The default for good reason.
- Level Q — codes with a logo, or anything printed small.
- Level H — rough surfaces, industrial settings, packaging that gets handled, or anywhere a code might get partly obscured.
- Level L — only when you need the smallest possible pattern and the code lives somewhere pristine.
What error correction cannot fix
Redundancy recovers damaged modules. It does not rescue a code with poor contrast, one printed too small for the scanning distance, or one where the quiet zone — the light margin around the pattern — has been cropped away.
Those three failures account for most codes that will not scan, and none of them are solved by raising the level. Contrast in particular: light modules on a dark background will defeat many phone cameras no matter how much redundancy you add, which is why QrZeo does not offer inverted codes at all.
