Skip to main content
QRSenBuilt for business
Technical

QR Code Error Correction Explained: Choosing the Right Level for Print

4 min readJune 30, 2026By Editorial Team
Technical Printing Guide

Every QR code carries more data than it strictly needs to encode its destination. That extra data is error correction — a built-in redundancy that lets a scanner reconstruct the correct result even if part of the code is damaged, obscured, or printed imperfectly. Understanding how it works makes it much easier to decide which level actually matters for a given use case.

What error correction actually does

QR codes use a method called Reed-Solomon error correction, the same general family of error correction used in things like CDs and satellite communication. In practical terms: the code encodes your data along with extra redundant information, structured so that a scanner can still calculate the correct result even if a meaningful portion of the pattern is missing, smudged, or covered — a logo placed in the center, a scratch, a spot of ink bleed.

The amount of redundancy is configurable, and more redundancy means more tolerance for damage — at the cost of a denser, more visually complex pattern, since encoding the same data plus more redundancy requires more modules.

The four standard levels

QR codes support four standard error correction levels, each named with a letter:

  • L (Low) — roughly 7% of the code can be damaged and still scan correctly.
  • M (Medium) — roughly 15% tolerance.
  • Q (Quartile) — roughly 25% tolerance.
  • H (High) — roughly 30% tolerance, the maximum standard level.

Each step up trades a denser pattern (more small modules packed into the same physical size) for a meaningfully higher tolerance for real-world damage. For a code that will only ever be viewed on a screen — displayed in a slide deck, shown in an email — a lower level is perfectly adequate, since there's no ink bleed, scratching, or lamination glare to plan around.

Why level H is the right default for print

Anything that gets physically printed is exposed to a category of damage a screen-only code never faces: ink bleed on absorbent paper stock, minor scratches from handling, dust or grime accumulating over the weeks or months a poster or sign stays up, glare from lamination under uneven lighting. Level H's roughly 30% tolerance is specifically calibrated to absorb that kind of real-world wear without the code failing.

This is why our generator defaults to level H for every export rather than asking users to choose — for the overwhelming majority of use cases (business cards, menus, packaging, signage, invitations), the modest increase in pattern density is a trivial cost against the real benefit of a code that keeps working after weeks in someone's wallet or months on an outdoor sign.

When a lower level might make sense

There are narrow cases where a lower level is a reasonable, deliberate choice rather than an oversight. If a QR code needs to encode an unusually long URL (rather than a short link) and physical space is extremely constrained — a tiny product label, for instance — a lower error correction level keeps the pattern simpler and easier for a camera to resolve at very small sizes, trading damage tolerance for base scannability at that scale.

In practice, this trade-off matters most at the extreme end of "very small and very long URL" simultaneously. For the vast majority of cases — a normal-length link at a normal print size — level H remains the safer default with no meaningful downside.

A common design request is placing a logo in the center of a QR code. This works precisely because of error correction: a scanner can reconstruct the covered portion using the redundant data encoded elsewhere in the pattern, as long as the logo doesn't cover more of the code than the chosen error correction level can tolerate. Level H's roughly 30% headroom is what makes a reasonably sized center logo viable at all — at a lower level, the same logo placement risks pushing the damaged area past what the code can recover from.

Putting this into practice

If you're printing QR codes for packaging, signage or anything that needs to survive real handling, our guide on why QR codes fail after printing covers the other side of this — resolution and contrast — alongside error correction as one part of a print-ready workflow.

Every code from this generator uses level H by default, so this isn't a setting you need to configure — it's simply how the generator behaves out of the box, matched to what holds up best under real-world print conditions.

Ready to create your QR code?

Free, unlimited, no sign-up. Lifetime guarantee.

Open QR Generator