Skip to main content

QR Code Error Correction Levels Explained: L, M, Q, H and Logos

QR codes can rebuild damaged or covered data - up to a point. Here is what error correction levels L, M, Q and H mean, and how a logo factors in.

UniSoftware 5 min read

QR Code Error Correction Levels Explained: L, M, Q, H and Logos

QR codes can rebuild part of their data even when a portion of the printed pattern is dirty, damaged or covered by a logo - that resilience is called error correction, and it comes in four standard levels: L, M, Q and H. Higher levels tolerate more damage but make the code denser.

Key takeaways

  • Error correction lets a QR code still decode correctly even if part of it is missing, dirty or covered.
  • UNI-QR offers the four standard levels with their approximate recovery capacity labeled directly in the app: L 7%, M 15%, Q 25%, H 30%.
  • A logo covers part of the pattern, so pair a larger logo with a higher level (Q or H) to keep the code reliable.
  • Higher levels add more data modules, making the pattern denser - raise the level only as far as you actually need.

How error correction works

A QR code does not just store your data once - it also stores extra "check" data calculated from it, using a method called Reed-Solomon error correction. A scanner uses that extra data to reconstruct the original content even if some modules are unreadable, within a limit set by the chosen level. More check data means more resilience, but it also means less of the code's total capacity is left for your actual content.

L
~7% - Clean digital use
M
~15% - General printed use
Q
~25% - Small logo
H
~30% - Larger logo, outdoor use
Approximate damage each error-correction level can tolerate, as labeled in UNI-QR.
LevelApprox. damage toleratedTypical use
Labout 7%Clean digital use, no logo, maximum space for data
Mabout 15%General printed use with no logo (UNI-QR's default)
Qabout 25%A small logo, or printing somewhere it might get a little worn
Habout 30%A larger logo, or codes on stickers, packaging or outdoor signage

Logos and error correction

Placing a logo in the middle of a QR code physically covers some of the data modules underneath it. Error correction is what allows the code to still decode correctly despite that gap - which is why a design with a logo should use a higher level (Q or H) rather than the default. There is still a limit: even H-level correction cannot compensate for a logo that covers too large a share of the pattern, so keep an added logo modest in size relative to the whole code.

Why denser isn't automatically worse

It can feel counterintuitive that adding more error-correction data - which makes the printed pattern visually busier - is meant to make a code more reliable, not less. The density itself is not the problem; a correctly printed high-density code at an adequate size scans exactly as fast as a sparse one. Density only becomes a real issue when the code is also printed very small, where the individual modules start to blur together at the printer's or camera's resolution limit. That is why the practical advice is to match the level to your actual need (a logo, expected wear) rather than always choosing H "to be safe," since the densest level offers no benefit on a clean, logo-free code and only adds unnecessary density.

A worked example

Picture the same QR code printed with M-level correction (about 15% tolerance) and with H-level correction (about 30% tolerance), then both get a coffee-cup ring stain covering roughly a fifth of the pattern. The M-level copy is right at the edge of what it can recover from - it may still scan, or the damage may push it just past what the extra check data can reconstruct, depending on exactly which modules were affected. The H-level copy has roughly double the tolerance of the damage it actually took, so it almost certainly still decodes cleanly. Neither outcome is guaranteed - error correction is a tolerance margin, not a promise - but the gap between the two levels is the difference between a code that might survive real-world wear and one with real room to spare.

Choosing a level in practice

  • No logo, used digitally (screen only): L is usually enough, and leaves the most room for data.
  • No logo, printed normally: M is a safe, commonly used default.
  • Small logo, or a surface that might get a little worn: Q.
  • Larger logo, or an outdoor/packaging sticker that will take more wear: H.

Error correction isn't a fix for everything

It is worth being precise about what error correction actually protects against, because it is easy to over-rely on it. It compensates for modules that are missing, obscured or misread - physical damage, dirt, a logo placed on top, or a scuff on a sticker. It does nothing for a code that is simply too small for the scanning distance, printed with low contrast between the dots and background, or missing its quiet-zone margin entirely - those are sizing and design problems, and no error-correction level will fix them. Treat error correction as one layer of reliability among several, alongside good contrast, an adequate print size and a visible margin, covered in full in Scan Reliability.

Whichever level you pick, treat it as a safety margin, not a guarantee - also use UNI-QR's built-in scan test after every design change, and scan a real printed or displayed copy with a phone before relying on it or printing in quantity. See Scan Reliability for the full picture, including contrast and quiet-zone guidance that matter just as much as the error-correction level.

What do L, M, Q and H stand for?
They are the four standard QR error-correction levels - Low, Medium, Quartile and High - each tolerating a larger approximate share of damage: about 7%, 15%, 25% and 30% respectively.
Which level should I use by default?
M is a reasonable default for general printed use with no logo; UNI-QR uses M as its own default.
Does a higher level always make the code more reliable?
It increases tolerance for damage or coverage, but it also adds more data modules, making the pattern denser - which can itself make a very small printed code harder to scan. Balance the level against your actual logo size and print size.
Can error correction fix a low-contrast color scheme?
No - error correction compensates for missing or covered modules, not poor contrast. Strong contrast between dots and background still matters regardless of the level chosen.

Create your QR code free

See the UNI-QR software page

Free QR code generator — complete guide, no login

Free WhatsApp QR code generator — link to chat

Free WiFi QR code generator — no typing, no login

View all
Title card reading Monkeytype Alternatives: Typing Test Sites Compared, on a UniSoftware branded background
Productivity & Office

Monkeytype Alternatives: Typing Test Sites Compared

A factual look at Monkeytype, 10fastfingers, keybr.com and Typing Master — comparing languages, test modes, accounts and extras like lessons, races and certificates, with no pricing claims.

· 5 min read

Free Typing Certificate - Typing Master article cover image
Productivity & Office

Free Typing Certificate: What It Shows and How to Get One

Typing Master generates a free, downloadable PNG typing certificate auto-filled from your real test or race result - no account needed. Here is what it shows and how to get yours.

· 3 min read