QR Code Error Correction Levels (L, M, Q, H) Explained
How QR code error correction works, what the L, M, Q, and H levels mean, and how to pick the right level for print, logos, and outdoor use.
What Error Correction Actually Does
Every QR code carries more than the data you encode. The QR standard builds in Reed-Solomon error correction — mathematical redundancy that lets a scanner rebuild missing or damaged information. That is why a code still reads when part of it is scratched, smudged, covered by a logo, or printed imperfectly.
You control how much protection to include by choosing an error correction level. There are four, each restoring a different share of the code — approximately 7% (L), 15% (M), 25% (Q), and 30% (H). These are approximate figures defined by the QR standard, not exact guarantees for any single scan.
The Four Levels at a Glance
| Level | Name | Approx. recovery | Best suited to |
|---|---|---|---|
| L | Low | ~7% | Clean digital display, maximum data capacity |
| M | Medium | ~15% | General-purpose default, standard indoor print |
| Q | Quartile | ~25% | Small logos, packaging, moderate wear |
| H | High | ~30% | Logo overlays, outdoor signage, high-reliability use |
Level M is the common default: it balances resilience against size for everyday links. Level H is the choice whenever a code is branded or exposed to the elements.
The Trade-Off: Resilience vs. Density
Error correction is not free. The recovery data adds more modules — the small squares that make up the code. For the same URL, a level-H code is denser than a level-L one, packing more modules into the same footprint or growing to fit them. Each module is then smaller at a given print size, so the code must be printed larger or scanned from closer to stay reliable — and long URLs make it worse. More protection forgives more damage but scans harder when small, so match the level to where the code will live.
When to Choose Each Level
- L — pristine, digital-only codes where the image cannot degrade and you want the smallest code.
- M — most general print: flyers, menus, and indoor documents with no logo. The sensible default.
- Q or H — whenever you add a logo. Artwork over the center covers modules, and error correction fills the gap; the more it covers, the higher the level you need. See our guide to add a logo for safe coverage limits.
- H — harsh or outdoor conditions, and anywhere reliability is critical: scuffed packaging, labels in sun and rain, curved surfaces, or high-traffic signage where a failed scan means a lost customer.
How QR2GO Applies Error Correction
QR2GO builds Reed-Solomon error correction into every code it generates. When you brand a code — adding a logo or applying one of QR2GO's artistic styles — a high error correction level keeps it scannable despite the overlay.
For print, export as SVG (free) so the modules stay razor-sharp at any size (print-ready PDF export is available for standard QR codes on Premium); a crisp vector paired with level H is the most durable combination. Then follow our design best practices and preparing for print, and scan the final output on more than one device.
Frequently Asked Questions
Which level should I use by default? Level M is safe for plain codes. Move up to Q or H the moment you add a logo, print small, or place the code outdoors.
Does higher error correction make the code bigger? It makes it denser: for the same data, a higher level adds modules, so the code grows or its modules shrink. Keep URLs short and print a little larger.
Can a QR code with a logo still be scanned? Yes — that is exactly what error correction enables. A high level (Q or H) reconstructs the modules hidden behind a centered logo, as long as it stays within safe coverage limits.
Is more error correction always better? No. Very high levels use more of the code's capacity and create denser codes that are harder to scan when small. Match the level to the real risk of damage, not the maximum available.
Ready to create a resilient, on-brand code? Open the QR2GO generator and build one in seconds.