A QR code with a logo in the center, a torn corner, or a coffee stain across part of it can often still scan perfectly. That's not luck — it's a deliberate feature of the QR code standard called error correction, and understanding it explains a lot about why some codes are far more damage-tolerant than others.
Quick Answer
QR codes include built-in redundancy called error correction, which lets them recover from partial damage — up to 30% of the code at the highest setting. There are four levels: L (15%), Q (30%). More redundancy means a more damage-tolerant code, but also a denser pattern — which is why logos and heavily branded QR codes should always use level Q or H.
How Error Correction Actually Works
QR codes use a mathematical technique called Reed-Solomon error correction — the same family of algorithms used in CDs, DVDs, and satellite communication — to add redundant data to the code. This redundant data lets a scanner reconstruct missing or misread portions of the code, up to a defined percentage, without needing every single module to be intact.
This is fundamentally different from a 1D barcode (like the CODE128 or EAN-13 codes on shipping labels and retail products), which has little to no error correction and typically fails outright with even minor damage. It's why a QR code with a logo covering 20% of its area can still work perfectly, while a barcode with a small tear often can't.
The Four Error Correction Levels
| Level | Recovery Capacity | Best For |
|---|---|---|
| L (Low) | ~7% | Maximum data density, no logo, controlled printing conditions |
| M (Medium) | ~15% | General-purpose use, the default for most QR generators |
| Q (Quartile) | ~25% | Small logos, outdoor or less-controlled printing |
| H (High) | ~30% | Any code with a center logo, codes expected to face wear or damage |
Higher error correction levels add more redundant data to the same QR code, which makes the pattern denser and, for a given payload, larger. This is a real tradeoff: level H at a long payload produces a visibly busier, more detailed code than the same payload at level L. For most general use without a logo, level M is a reasonable default — it balances data density with meaningful damage tolerance.
Why This Matters for Logos
A logo placed in the center of a QR code physically covers modules the scanner would otherwise read directly. The scanner has to reconstruct that covered area entirely from error correction — which only works if enough redundancy exists. This is why the QR Code Generator with Logo automatically sets error correction to H whenever a logo is added: level L or M, which is fine for a plain code, would very likely produce an undecodable code once even a modest logo is added.
For the full logo-placement workflow — sizing, padding, and testing — see How to Add a Logo to a QR Code Without Breaking It.
Why This Matters for Damage
The same principle explains why a torn, scuffed, or partially printed QR code sometimes still works. If the damaged area falls within the error-correction budget for that code's level — say, under 15% of the total modules at level M — the scanner reconstructs the missing data automatically, with no visible sign anything was wrong. Damage beyond that budget, or damage concentrated in the code's timing patterns or position markers (the three squares in the corners), breaks the code regardless of error correction level. See why your QR code won't scan for the other common failure causes.
Which Level Should You Use?
No logo, controlled environment (digital display, indoor signage): Level M is a safe, space-efficient default.
Any logo, however small: Level Q at minimum, level H recommended.
Outdoor signage, packaging, or anything exposed to wear: Level Q or H.
Very long payloads where density is already a concern (e.g. a full vCard with an address): Level L or M, since a high level on top of a dense payload can make the code large or fussy to scan — shortening the payload is usually a better fix than lowering error correction.
The QR Code Generator lets you set error correction directly and includes a scan-reliability panel that flags when your combination of logo size and error correction level is likely to cause problems.
Related Tools
QR Code Generator — Create a QR code with adjustable error correction (L, M, Q, H)
QR Code Generator with Logo — Automatically applies level H for logo safety
QR Code Scanner — Test whether a code decodes correctly before printing it
Related reading: why your QR code won't scan. The QR Code Tools collection groups every QR utility in one place, and the full Generator Tools category has everything else alongside it.
FAQ
What error correction level should I use for a QR code with a logo?
Level H (High), which recovers up to roughly 30% data loss. This is the level needed to reliably compensate for a logo covering 20–25% of the QR code's area — lower levels often fail once a logo of meaningful size is added.
Does higher error correction make a QR code more secure?
No — error correction is about damage and coverage tolerance, not security or encryption. A QR code's contents are always readable by anyone who scans it, regardless of error correction level.
Does error correction slow down scanning?
Not meaningfully. The tradeoff is visual density and physical size, not scan speed — a higher error correction level produces a busier-looking pattern for the same data, but a properly sized, well-printed code at any level scans at essentially the same speed.
Can a QR code be too damaged even at the highest error correction level?
Yes. Level H recovers up to about 30% data loss, but damage beyond that — or damage concentrated in the position markers (the three corner squares) or timing patterns — breaks the code regardless of error correction level. There's no level that makes a QR code indestructible.
Why do some QR code generators default to a lower error correction level?
Lower levels (L or M) produce a more data-dense, visually simpler code for the same payload, which is preferable when there's no logo and printing conditions are controlled. Many tools default to M as a balance between density and damage tolerance, then let you raise it manually when adding a logo or expecting wear.
Try It Now
Generate a QR code with the right error correction level for your use case using the QR Code Generator — free, with a built-in scan-reliability check before you export.
Khushbu
Full-Stack Developer & Founder
I build tools I wish existed — fast, free, and private. Every tool runs in your browser because I believe your data should stay yours.
Tools mentioned in this guide

