Free tool · No signup

QR error correction demo

Damage a QR code live and see which correction levels survive.

Damage pattern
L7% recovery
Testing…
M15% recovery
Testing…
Q25% recovery
Testing…
H30% recovery
Testing…

Testing…

How error correction works

Every QR code carries spare copies of its data, woven through the pattern using Reed–Solomon error correction — the same maths that keeps CDs and satellite signals readable. Think of it as extra puzzle pieces: even if some are torn away, the reader can rebuild the whole picture from what remains.

There are four levels — L, M, Q, and H — recovering roughly 7%, 15%, 25%, and 30% of the code respectively. Higher levels survive more damage, dirt, and glare, which is exactly why a code with a logo in the middle needs level H: the logo itself counts as damage the code must repair around.

Protection is not free. A higher level packs in more spare data, so the same content needs more modules — meaning smaller modules at the same print size, and a code that must be printed a little larger to stay sharp. The demo above lets you feel that trade-off before you commit.

When each level makes sense

Logo in the centre → H

Any code with a brand logo or icon covering the middle needs level H, so the reader can reconstruct the modules hidden behind it.

Outdoor & packaging → Q or H

Stickers on boxes, storefront glass, and vehicle wraps get scratched, wet, and smudged — the extra recovery of Q or H keeps them scanning.

Clean on-screen → M

A code shown on a slide or web page will never get dirty, so level M is plenty — it keeps modules larger and the pattern easier to read.

Choosing a level

  • Use H whenever a logo sits on the code. Anything lower risks the logo eating data the reader cannot rebuild.
  • Prefer Q or H for anything printed and handled. Real-world wear — folds, scuffs, coffee rings — eats into the recovery budget fast.
  • Do not reach for H by reflex. On a clean digital surface, H just makes modules smaller for no benefit — M is the sweet spot there.
  • Never use L on print. A 7% recovery margin disappears at the first smudge; keep L for controlled digital display only.
  • Raising the level means more modules, so print a little larger — the free QR size calculator turns your scan distance into a safe minimum width.

See the size trade-off in the QR size calculator.

Frequently asked questions

Every QR code stores extra recovery data using Reed–Solomon codes — like packing spare puzzle pieces with the puzzle. When part of the code is scratched, stained, or covered, the scanner rebuilds the missing pieces from the spares. That is why a torn or dirty QR code can still scan perfectly.

They are the four error-correction levels defined by the QR standard, each reserving a different share of the code for recovery data: L restores about 7% of damaged codewords, M about 15%, Q about 25%, and H about 30%. Higher levels survive more damage but store less content per module, so the code gets denser.

Use H. A center logo permanently covers real data modules, so it consumes part of the recovery budget before the code ever leaves your screen — a logo covering 10–15% of the code plus a small scratch can already defeat level M. With H you keep roughly 30% of headroom, enough for the logo and real-world wear.

It makes the code denser, not physically bigger: the same content needs more modules at H than at L, so at the same print size each module gets smaller and harder for cameras to resolve. Compensate by shortening the encoded link or printing the code slightly larger.

The percentages describe recoverable codewords, not surface area, and location matters enormously. Damage that hits the three corner finder squares or the timing lines can defeat any level almost instantly, while the same area of damage spread across data modules is routinely repaired. Try the corner mode in the demo to see this yourself.

Treat it as a conservative lower bound. The demo decodes with a strict JavaScript reader on a perfect, flat image; modern phone cameras add multi-frame capture, better binarization, and angle correction, so a code that passes here almost always scans in real life. Everything runs in your browser — the code and content never leave your device.

Need to edit your QR code after printing?

Dynamic QR codes let you change the destination anytime — no reprinting — and show you every scan: when, where, and on which device. Try the full QRA studio free for 14 days.