Skip to main content
QrZeo
← BlogDesign

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.

QrZeo TeamMarch 11, 20262 min read

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.

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.

QrZeo Team
Written by the team building QrZeo
FAQ

Questions from this article

Does a higher level make the code bigger on the page?
It makes the pattern denser — more modules in the same square. To keep each module readable you generally print the whole code slightly larger.
How big can a logo be before the code breaks?
Roughly 30% of the area at level H is the theoretical ceiling, but that leaves no margin for print or damage. QrZeo's badge sits near 6%, which is deliberately conservative.

Make your first QR code in under a minute

Free plan, no credit card. Unlimited static codes forever, and three dynamic ones so you can watch re-pointing work before you pay for it.

24 content types · Static & dynamic · PNG & SVG · Free forever plan