QR error correction: how much to use (and how much you can afford)
Error correction is why a QR keeps scanning with a logo on top, a splash of sauce or a scratch across it. It is also why so many printed QRs become impossible to scan: more correction means more modules, and smaller modules. This guide covers the trade-off.
What error correction is for
A QR code is not an image: it is a grid of modules plus redundancy data computed with a Reed–Solomon algorithm — the same family of maths used by CDs and DVDs. That redundancy lets a phone rebuild part of the code even when a chunk of it is damaged, covered or blurred. The correction level sets how much can be missing.
The four levels
| Level | Recoverable data | When to use it |
|---|---|---|
| L (low) | ≈ 7 % | Very dense codes (long text) that must fit in a tiny space. Rare. |
| M (medium) | ≈ 15 % | The sensible default for screens and cleanly printed paper. |
| Q (quartile) | ≈ 25 % | Printed codes, stickers, objects that get dirty or handled. A good general bet. |
| H (high) | ≈ 30 % | When there is a logo or text in the middle, or the code will take real abuse. |
Center logos and why they demand H
A logo covers the densest part of the code. With level H the phone can rebuild up to about 30 % of the pattern, so a centered box of roughly 20–25 % of the total width sits comfortably. At level M, a logo that size usually breaks scanning.
- Keep the logo within 20–25 % of the width and perfectly centered.
- Leave a clean white ring around it.
- Never cover the position markers (the three corner squares) or their alignment patterns.
- A logo with thin text looks fine on screen and vanishes in print: simplify it.
How it affects a 3D-printed code
On a 3D plate, the «damage» is not only dirt: it is also modules that do not print crisply. Our simple rule:
| Situation | Suggested level | Why |
|---|---|---|
| Indoor plate, normal use | M or Q | Good balance between size and resilience |
| Object that gets dirty or washed | Q | Tolerates stains and surface wear |
| Logo or text in the middle | H | The center is the first thing lost |
| Long text on a small plate | M | At H the modules become too small to print |
What correction cannot fix
- No contrast at all: grey on grey defeats any level of redundancy.
- Smeared modules: if the printer merges them into a blob, the phone sees noise, not patterns.
- A cut quiet zone: the clear margin around the code is not optional.
- Extreme perspective: a code printed on a strongly curved surface distorts in ways no level corrects.
Check it in two minutes
- Generate the QR at the level you intend to use.
- Scan it on screen with two different phones.
- Print one plate, let it cool and scan it at the real distance.
- If it fails, try a bigger plate or a shorter link before raising the correction level — it usually works better.
If the problem is the link you are encoding, read the link behind the QR. If it is the print itself, read durable materials.
Question this guide does not answer? Tell us and we will add it.