Error correction is the part of a QR code's design that decides how much physical damage — a scratch, a smudge, a corner torn off — the code can shrug off and still scan correctly. Unqode SmartQR exposes this as a direct four-way choice in the design step, right next to the percentage it recovers.
The four levels
| Level | Recovery capacity | Best for |
|---|---|---|
| L (Low) | ~7% | Digital screens and clean, controlled environments |
| M (Medium) | ~15% | General print use — the default for every new code |
| Q (Quartile) | ~25% | Industrial settings, or anywhere the code might pick up light dirt or wear |
| H (High) | ~30% | Any code with a logo, or genuinely harsh conditions |
When each one actually makes sense
- L — reserve this for pure digital use (a website, an email, a presentation slide). It produces the cleanest, least dense pattern, but it's the least forgiving of any real-world damage.
- M — the sensible default for most printed material. Enough resilience for everyday handling without inflating the pattern unnecessarily.
- Q — worth stepping up to for product packaging, warehouse labels, or anywhere the code might get a bit scuffed before anyone scans it.
- H — required in practice for any code carrying a logo, which is why Unqode SmartQR sets it automatically the moment you upload one.
You don't need to remember to set this manually when adding a logo — Unqode SmartQR upgrades to High automatically the instant a logo is uploaded, and drops back to Medium if you remove it.
Does a higher level make scanning slower?
Not in any way you'd notice — modern scanner hardware and software handle all four levels at effectively the same speed. The real trade-off is visual: higher error correction means more modules packed into the same physical size, so the pattern looks visually busier. At very small print sizes, that added density can occasionally cost you more in legibility than the extra resilience gains you, which is one reason L or M sometimes outperforms H at, say, business-card scale.