QR Code Error Correction Levels Explained
Error correction is one of the most important — and most misunderstood — settings when creating a QR code. Choosing the right level determines whether your code scans reliably in the real world.
What Is Error Correction in a QR Code?
QR codes use a mathematical technique called Reed-Solomon error correction to encode redundant data within the code itself. This means that even if part of the QR code is physically damaged, obscured, or dirty, the scanner can reconstruct the missing data from the redundant copies. Reed-Solomon error correction was first described by mathematicians Irving Reed and Gustave Solomon in 1960 — and was later adapted by Denso Wave engineers when they invented QR codes in 1994.
Think of it like a RAID disk array: even if one disk fails, the data can be recovered from the others. QR codes work on the same principle — the more redundancy built in, the higher the percentage of damage the code can absorb and still scan correctly.
According to ISO/IEC 18004:2015, QR codes support four error correction levels, each recovering a different maximum percentage of data loss. The trade-off: higher correction means more data modules in the code, which makes the QR code physically larger and more visually dense for the same amount of encoded data.
The 4 Error Correction Levels
Smallest code size. Suitable for controlled environments where the QR code will be displayed cleanly and scanned at close range on a stable surface.
The most common default level. Good balance of size and reliability for general print use — brochures, posters, cards. Not enough for logo overlays.
Higher redundancy for outdoor signage, mildly dirty environments, or small logo overlays. Code is noticeably more dense than M level.
Maximum redundancy. Required for logo-overlaid QR codes, outdoor contexts, product packaging, and anywhere damage or partial obscuration is likely.
The percentage figures (7%, 15%, 25%, 30%) refer to the maximum percentage of codeword data that can be corrupted or missing and still be fully reconstructed. According to QR Tiger testing, QR codes printed at Level H remain scannable even when up to 30% of the code surface is obscured or damaged — a finding consistent with the ISO/IEC 18004:2015 specification.
Full Comparison Table
| Level | Recovery | Code Size | Logo Overlay | Best For |
|---|---|---|---|---|
| L Low | 7% | Smallest | No | Digital displays, screens, apps |
| M Medium | 15% | Small | Very small only | Standard print: brochures, flyers |
| Q Quartile | 25% | Medium | Small–medium | Outdoor signage, light logo use |
| H High | 30% | Largest | Yes (up to ~30%) | Logos overlaid, outdoor, packaging |
When to Use Each Level
Level L — Digital screens only
Use Level L when your QR code will only ever be displayed on a clean, high-resolution digital screen and scanned at close range: a presentation slide, a website, a digital signage display in ideal lighting. The code will be as compact as possible, which matters when space is tight on screen.
Never use Level L for print. Real-world printing introduces subtle imperfections, paper grain, and wear that can push a 7% tolerance code into failure territory quickly.
Level M — Standard print (flyers, brochures, cards)
Level M is the appropriate default for everyday print materials in clean, indoor environments: business cards, flyers, product inserts, and table cards. The 15% recovery tolerance handles typical print quality variation and minor wear without inflating the code's physical size too much.
If you're unsure whether you need M or Q, go with Q — the size increase is modest and the extra resilience is worth it in almost every print context.
Level Q — Outdoor signage and light logo use
Use Level Q for QR codes placed outdoors on signage, A-frames, or window stickers, where exposure to rain, dirt, direct sunlight, and physical contact will degrade the code surface over time. It's also the minimum for placing a very small logo (under 10% of the QR area) in the centre of the code.
Level H — Logos, outdoor, product packaging
Level H is the right choice whenever:
- You're placing a logo or image in the centre of the QR code
- The code will be used outdoors and exposed to weather for weeks or months
- The code is on product packaging that will be handled, stacked, and potentially scuffed
- The code will be applied as a sticker that may peel at the edges
- You want maximum reliability for any print context
With Level H, a centred logo covering up to roughly 25–30% of the code's area can still be fully scanned. The logo does not need to be perfectly centred, but it should not touch the three finder pattern squares in the corners.
How Error Correction Affects QR Code Size and Complexity
Higher error correction means more modules (the small squares) in the QR code. For the same data payload, a Level H code will be larger and visually denser than a Level L code. Specifically:
- A short URL at Level L might generate a 25×25 module version-2 code
- The same URL at Level H might require a 29×29 module version-3 code
- Longer URLs at Level H may require version-5 or higher (37×37 modules)
In practice for print use, this difference is small and rarely visible to the naked eye. The codes look similarly dense. The minimum print size changes slightly — see our QR code size guide for exact print specifications.
For digital displays where space is truly at a premium (e.g., a small QR code in a mobile app UI), Level L is worth using to keep the code compact and render crisply at smaller pixel sizes. For everything else, err on the side of more error correction.
QRMake uses Level H by default — here's why
We generate all QR codes at Error Correction Level H. This means your codes can withstand up to 30% surface damage and fully support logo overlays in the centre. Most users are creating codes for print use — business cards, marketing materials, signage — where resilience and logo compatibility matter far more than the marginal size difference. Level H is the right default for real-world QR codes. Download as a high-res PNG (at least 1000px) for the cleanest print output — see our PNG download guide for best practices.
Common Questions About Error Correction
What is QR code error correction?
QR code error correction is a built-in mechanism that allows a QR code to be read correctly even when part of it is physically damaged, obscured, or dirty. It uses Reed-Solomon error correction — a mathematical algorithm first described by Irving Reed and Gustave Solomon in 1960 — to encode redundant data within the code. Even if a portion of the QR code is missing, a scanner can reconstruct the full data from the redundant copies.
What are the four error correction levels in QR codes?
According to ISO/IEC 18004:2015, QR codes support four error correction levels: L (Low) recovers up to 7% of damaged data and produces the smallest code; M (Medium) recovers up to 15% and is the most common default; Q (Quartile) recovers up to 25% and is suitable for outdoor use and small logo overlays; H (High) recovers up to 30% and is required for logo-overlaid codes, outdoor signage, and product packaging.
Which error correction level should I choose?
For most print use cases — business cards, flyers, posters, and packaging — choose Level H. It provides maximum damage tolerance and supports logo overlays up to approximately 25–30% of the code area. Level L is only suitable for clean digital screens where damage is impossible. When in doubt, H is always the safe choice — the size difference compared to Level M is negligible in real print applications.
Can a damaged QR code still be scanned?
Yes. QR Tiger testing found that QR codes printed at Level H remain scannable even when up to 30% of the code surface is obscured or damaged. A small tear, fold crease, or partial smudge that covers less than this threshold will typically still scan successfully. However, damage to the three square finder patterns in the corners is more critical — these orient the scanner and losing all three makes reading very difficult.
Why does a higher error correction level make the QR code more complex?
Higher error correction means more redundant data modules must be packed into the code grid. For the same encoded data, a Level H code requires more squares (modules) than a Level L code — making it physically larger or more visually dense. For a short URL at Level L, a 25×25 module grid may suffice; the same URL at Level H may require a 29×29 or larger grid. In practice for print use, this difference is barely visible to the naked eye.
What error correction level does QRMake use?
QRMake generates all QR codes at Error Correction Level H by default. This ensures maximum damage tolerance (up to 30% of the code surface) and full support for logo overlays. Since most users create codes for print use — business cards, marketing materials, outdoor signage — Level H is the right default. The marginal size increase compared to lower levels is negligible in real-world print applications.
Generate a Level H QR Code for Free
All QRMake codes use maximum error correction by default — perfect for print, logos, and outdoor use.