QR Code Error Correction Levels Explained: L, M, Q, H Guide (2026)

Key Takeaway
Understand QR code error correction levels (L, M, Q, H) — how they work, which to use for logos and print, and how Reed-Solomon encoding keeps codes scannable.
QR code error correction is a built-in technology that allows QR codes to remain scannable even when part of the code is damaged, dirty, or obscured. This is one of the key reasons QR codes are so reliable — they can lose a significant portion of their data and still work.
The technology was developed by DENSO WAVE when they invented QR codes in 1994. It uses Reed-Solomon error correction, the same mathematical algorithm used in CDs, DVDs, and satellite communications. The algorithm adds redundant data to the QR code so that a scanner can reconstruct the original information even if some modules are unreadable.
Every QR code has one of four error correction levels, and choosing the right level affects both the reliability and the data capacity of your code.
The ISO/IEC 18004 standard defines four error correction levels for QR codes:
| Level | Name | Data Recovery | Use Case |
|---|---|---|---|
| L | Low | ~7% of data recoverable | Clean digital displays, screens |
| M | Medium | ~15% of data recoverable | General purpose (default) |
| Q | Quartile | ~25% of data recoverable | Industrial, outdoor signage |
| H | High | ~30% of data recoverable | Harsh environments, logo overlay |
Level M (15%) is the most commonly used default. It balances reliability with data density for most everyday applications. Level H is essential when you want to add a logo in the center of the QR code, because the logo effectively damages up to 30% of the code area.
Without getting too deep into mathematics, here is how QR code error correction works in simple terms:
- Data encoding: Your URL, text, or data is converted into a binary sequence of 1s and 0s
- Redundancy addition: The Reed-Solomon algorithm calculates additional "error correction codewords" and appends them to the data. The higher the error correction level, the more redundant data is added
- Module placement: Both the original data and the error correction codewords are placed as dark/light modules (squares) in the QR code grid
- Scanning and recovery: When a scanner reads the QR code, it checks for errors. If modules are missing or damaged, the algorithm uses the redundant codewords to reconstruct the original data
Think of it like sending a message with extra copies of key words. If some words get smudged, the reader can fill in the blanks from the copies.
There is a direct trade-off between error correction level and QR code density:
- Higher error correction = more modules = larger or denser code
- Lower error correction = fewer modules = smaller or simpler code
For the same data content, a QR code with Level H error correction will have roughly 65% more modules than one with Level L. This means:
- The code needs to be printed larger for reliable scanning
- Or each module becomes smaller, requiring a higher-quality printer and camera
This is why choosing the right level matters. Using Level H when Level M would suffice wastes space and makes the code harder to scan at small sizes. See our QR Code Size Guide for specific minimum dimensions.
Choose based on where your QR code will be used:
| Scenario | Recommended Level | Why |
|---|---|---|
| Digital screen/display | L (Low) | No physical damage risk, smallest code size |
| Business cards, flyers | M (Medium) | Standard handling, good balance |
| Product packaging | M or Q | May get scuffed during shipping |
| QR code with logo overlay | H (High) | Logo covers ~7-10% of the code |
| Outdoor signage | Q or H | Weather, dirt, and UV exposure |
| Industrial/warehouse | H (High) | Harsh conditions, dust, moisture |
| Stickers | Q (Quartile) | May peel, scratch, or fade |
When using QR codes with logos, always use Level H. The logo effectively destroys a portion of the code, and Level H ensures the code remains scannable despite this intentional damage.
How to Choose and Set Error Correction Level
Assess your environment
Where will the QR code be displayed? Indoor/clean environments can use Level L or M. Outdoor, industrial, or high-wear environments need Q or H.
Check if you are adding a logo
If you plan to overlay a logo on the QR code center, you must use Level H (30% recovery). The logo typically covers 7-10% of the code area. Level M would not survive this.
Consider the data size
Longer URLs or more data require more modules. Higher error correction adds even more. If your QR code is getting too dense, shorten the URL (use a dynamic QR code) or reduce the error correction level.
Test before mass production
Print a sample QR code and scan it from the expected distance, in the expected lighting, with multiple phone models. If it scans reliably, your error correction level is appropriate.
Error correction is what makes creative QR code design possible. Without it, any modification to the standard black-and-white grid would break the code. With Level H error correction, you can:
- Add logos: Place a small image in the center covering up to ~10% of the code
- Use custom colors: As long as there is sufficient contrast between foreground and background
- Use rounded dots: The shape of individual modules can be changed without affecting scannability
- Add gradient effects: Subtle gradients work if contrast is maintained
The key rule: high error correction enables more creative freedom, but always test the final design before printing. Creative designs that reduce contrast or obscure too many modules will still fail.
Avoid these pitfalls that cause QR codes to become unscannable:
- Using Level L with a logo: Level L can only recover 7% of data — a centered logo destroys more than that
- Ignoring the quiet zone: The white border around a QR code is not optional. Without it, scanners cannot detect the code boundaries
- Low contrast with Level L: Light gray on white might scan with Level H but will fail with Level L
- Printing too small: High error correction adds more modules. If you then print the code too small, individual modules become unresolvable by cameras
- Compressing as JPG: JPEG compression blurs module edges. Always use PNG or SVG for QR codes
If your QR code is not scanning, check our 12 Common Fixes guide.
Frequently Asked Questions
What is QR code error correction?
Error correction is a built-in feature of QR codes that allows them to remain scannable even when part of the code is damaged, dirty, or obscured. It uses Reed-Solomon encoding to add redundant data, enabling recovery of 7% to 30% of the code depending on the level chosen.
What are the four error correction levels?
Level L (Low, ~7% recovery), Level M (Medium, ~15%), Level Q (Quartile, ~25%), and Level H (High, ~30%). Level M is the most common default. Level H is required when adding a logo overlay.
Which error correction level should I use for a logo QR code?
Always use Level H (High) when adding a logo to your QR code. A centered logo typically covers 7-10% of the code area. Level H can recover up to 30% of data, providing enough margin for the logo plus any additional wear or damage.
Does higher error correction make a QR code bigger?
Yes. Higher error correction adds more redundant data modules. A Level H code has roughly 65% more modules than a Level L code for the same data. This means the code is denser and needs to be printed larger for reliable scanning.
What is Reed-Solomon error correction?
Reed-Solomon is a mathematical algorithm that creates redundant data from the original data. If some of the data is lost, the algorithm can reconstruct it from the redundant portion. It is used in QR codes, CDs, DVDs, satellite communications, and data storage systems.
Can a damaged QR code still work?
Yes, thanks to error correction. A QR code with Level H can lose up to 30% of its modules and still be scannable. This means scratches, dirt, partial tears, or even intentional design elements like logos will not prevent scanning.
What is the default error correction level?
Most QR code generators use Level M (Medium, ~15% recovery) as the default. This provides a good balance between reliability and code size for standard use cases like business cards, flyers, and digital displays.
Does error correction level affect scan speed?
Negligibly. Modern smartphone cameras decode QR codes in milliseconds regardless of the error correction level. The difference is in reliability — higher levels are more likely to scan on the first attempt in challenging conditions.
Why does my QR code with a logo not scan?
The logo may be too large (covering more than 10% of the code), the error correction level may be too low (use Level H), or the logo may obscure critical alignment patterns. Reduce the logo size or increase the error correction level.
Can I change the error correction level after creating a QR code?
No. The error correction level is embedded in the QR code during generation. To change it, you must regenerate the QR code. With a dynamic QR code, the visual code changes but the destination URL stays the same.
Is Level H always the best choice?
No. Level H creates the densest, largest codes. For clean digital displays or short URLs on high-quality prints, Level L or M produces a simpler, easier-to-scan code. Use Level H only when you need the extra reliability (harsh environments, logo overlay).
How do I test if my error correction level is sufficient?
Print a test QR code and scan it from the expected distance with 3-5 different phones. Try covering parts of the code with your finger to simulate damage. If it still scans, your error correction level is adequate.


