QR code error correction, explained

Updated 2026-07-05 · The Ever-QR team

Error correction is the reason a scuffed, sun-faded, logo-bearing QR code still opens the right page — and the reason the same code, generated one dropdown lower, doesn't. It is the single most consequential setting most people never touch.

What it actually is

Alongside your data, the code stores mathematically redundant recovery blocks (Reed-Solomon — the same family that let scratched CDs play). Scanners use them to reconstruct missing or misread modules, not merely tolerate them: up to the level's budget, damage is invisible to the outcome.

| Level | Recoverable | Honest use case | |---|---|---| | L | ~7% | Screens only, short-lived | | M | ~15% | Default of many generators — fine on screen | | Q | ~25% | Print without logo, cautious | | H | ~30% | Anything printed. Non-negotiable with a logo. |

Where the budget goes in real life

The reserve is a shared account and everything draws on it: your logo (a centered logo covering a fifth of the pattern has spent most of a level-M budget before leaving the design tool), print imperfections (ink bleed, soft edges from bad files), field damage (scratches, fading, stickers, fingerprints) and reading conditions (glare, angle). A code needs reserve *left over* after the logo — which is the entire logic of "H with logos".

What our tests showed

Validating Ever-QR's pipeline, we pushed real exports until they broke: codes at level H — including with detailed centered logos — kept decoding when reduced to the equivalent of ~1.5 cm, far below recommended print sizes. That surplus is the design: field conditions will claim their share, and the code must still have margin. It is why our generator recommends maximum tolerance whenever a logo is added, and why "Standard" is offered only for logo-free codes.

The two mistakes

Choosing L to make the pattern less dense. The density saving is cosmetic at print sizes; the lost insurance is not. If density is the problem, shorten the URL — same effect, no cost.

Assuming correction fixes design sins. It recovers *damage*, not missing quiet zones, inverted colors or weak contrast — those defeat the scanner before reconstruction ever begins.

One dropdown, set once, at creation. Set it to H for print and forget the topic exists — that is what insurance is for.

Frequently asked questions

What do the QR error correction levels L, M, Q and H mean?

They set how much of the pattern can be lost while the data still reconstructs: L ≈ 7%, M ≈ 15%, Q ≈ 25%, H ≈ 30%. The reserve is built in at creation and cannot be added afterwards.

Which error correction level should I choose?

H for anything printed — scuffs, fading and glare will spend the reserve for you. L or M are acceptable for short-lived on-screen codes where damage isn't a factor.

Does higher error correction make the QR code bigger?

Denser, yes: the redundancy data adds modules. At normal print sizes the difference is invisible; the insurance it buys is not.

Is error correction why logos work in QR codes?

Entirely. The logo deliberately covers modules — spending the reserve. A modest centered logo at level H scans reliably; the same logo at level L is a gamble the standard never promised to cover.

Create a QR code that answers to no server.

Static, permanent, yours. €5 once — no subscription, no expiry, print-ready files.

Create my permanent QR