QR Code Error Correction Explained: Choosing the Right Level
QR code error correction is one of the most powerful yet misunderstood features of QR code technology. It's what allows QR codes to work even when they're partially damaged, dirty, or obscured by logos. This comprehensive guide explains how error correction works, the differences between L, M, Q, and H levels, and how to choose the right level for your specific use case.
What is QR Code Error Correction?
Error correction, also called ECC (Error Correction Code), is a built-in feature that allows QR codes to remain readable even when portions of the code are damaged, obscured, or dirty. This redundancy is achieved through the Reed-Solomon error correction algorithm, which adds extra data to the QR code that can be used to reconstruct missing or corrupted information.
Think of error correction like backup copies of a document. If the original gets damaged, you can still recover the information from the backup. QR codes work similarly - they store redundant data that enables scanners to decode the content even when parts of the code are unreadable.
How It Works:
When you create a QR code, the error correction algorithm adds redundant data patterns throughout the code. When scanning, if some modules (the black and white squares) are damaged or missing, the scanner uses the redundant data to mathematically reconstruct the original information. This happens instantly and invisibly to the user.
The Four Error Correction Levels
QR codes offer four standardized error correction levels, each providing different levels of damage tolerance at the cost of data density:
Level L (Low)
7% Damage ToleranceThe lowest error correction level, tolerating up to 7% data damage or loss.
Best for: High data density needs, perfect printing conditions, short-term indoor use
Use when: Maximum data capacity is priority and printing/display quality is guaranteed
Avoid when: Outdoor use, adding logos, harsh environments, or long-term durability needed
Level M (Medium)
15% Damage ToleranceModerate error correction, handling up to 15% damage while maintaining good data capacity.
Best for: General purpose QR codes, standard business applications, reasonable data capacity needs
Use when: Balance between data capacity and reliability is important
Avoid when: Logos will be added or harsh outdoor conditions expected
Level Q (Quartile)
25% Damage ToleranceHigh error correction, tolerating up to 25% damage. The recommended default for most use cases.
Best for: Most common applications, outdoor signage, printed materials, professional use
Use when: You want reliable scanning without sacrificing too much data capacity
Recommended as: Default choice for the majority of QR code applications
Level H (High)
30% Damage ToleranceMaximum error correction, withstanding up to 30% damage. Essential for QR codes with logos.
Best for: QR codes with logos, harsh outdoor environments, industrial applications, maximum durability
Use when: Adding company logo, expecting wear and tear, or critical scanning reliability needed
Trade-off: Reduced data capacity - QR code may be larger for same amount of data
How Error Correction Affects QR Code Size
Higher error correction levels add more redundant data to your QR code. This means that for the same content, a QR code with higher error correction will have more modules (be visually larger or denser) than one with lower error correction.
Example: Encoding "https://www.gocreateqr.com"
Level L (7%): 25x25 modules - smallest size, most data capacity
Level M (15%): 25x25 modules - slightly more redundancy
Level Q (25%): 29x29 modules - increased redundancy
Level H (30%): 29x29 modules - maximum redundancy, largest size
For short content, the difference is minimal. But as content length increases, higher error correction levels will push your QR code to larger versions (QR codes come in 40 "versions" ranging from 21x21 to 177x177 modules).
Choosing the Right Error Correction Level
Use Level L (7%) When:
- Encoding very long URLs or large amounts of data
- Printing conditions are perfect (high-quality printer, clean surface)
- QR code will be displayed digitally on screens
- Indoor use only with no exposure to elements
- Short-term use (event tickets, temporary promotions)
- Size constraints require maximum data density
Level L Warning:
Never use Level L if you plan to add a logo or expect any kind of physical damage. Even minor smudges or printing imperfections can make Level L codes unscannable. Reserve this level for controlled, pristine environments only.
Use Level M (15%) When:
- General purpose business cards without logos
- Indoor posters and signage
- Product packaging in controlled environments
- Digital displays with guaranteed clarity
- Need balance between data capacity and reliability
- Printing quality is good but not perfect
Use Level Q (25%) When:
- You're unsure which level to choose (it's the safe default)
- Outdoor signage and advertising
- Printed marketing materials (flyers, brochures)
- T-shirts and fabric applications
- Vehicle wraps and decals
- Long-term use (permanent installations)
- Professional business applications
Recommended Default:
Level Q (25%) is the sweet spot for most applications. It provides excellent damage tolerance without significantly impacting data capacity, making it ideal when you're not sure which level to choose or when reliability is important.
Use Level H (30%) When:
- Adding any logo or image overlay (this is mandatory)
- Industrial environments (factories, warehouses, construction)
- Outdoor exposure to weather and UV light
- High-traffic areas with wear and tear
- Rough surfaces (concrete, wood, textured materials)
- Critical applications where scan reliability is paramount
- Asset tracking labels subject to abrasion
- Long-term outdoor installations (years of use)
Error Correction and Logo Placement
One of the most common uses of high error correction is enabling logo placement on QR codes. When you add a logo to the center of a QR code, you're effectively "damaging" the code by obscuring parts of the data.
Logo Size Guidelines by Error Correction Level
Level L (7%): Do not add logos
Insufficient error correction. Even small logos will prevent scanning.
Level M (15%): 5-10% coverage maximum
Only tiny logos recommended. High risk of scan failures with standard logo sizes.
Level Q (25%): 15-20% coverage
Can accommodate small to medium logos. Test thoroughly before mass production.
Level H (30%): 20-26% coverage recommended
Ideal for logos. Can handle standard logo sizes reliably with proper implementation.
Important: These percentages refer to the total QR code area, not just the logo size. Always leave white space (a "quiet zone") around the logo for better scannability. Professional QR generators place logos strategically to avoid critical data areas.
Best Practices for Logos on QR Codes
- Always use Level H (30%) error correction when adding logos
- Keep logos centered and avoid corners (corners contain positioning patterns)
- Use solid background behind logo (white or light color) for contrast
- Test scanning from multiple devices and distances before printing
- Consider logo size: 20-25% of QR code area is optimal
- Ensure high contrast between logo, background, and QR code
- Don't place text over QR code modules - only in the logo area
Real-World Error Correction Scenarios
Scenario 1: Restaurant Menu QR Codes on Tables
Environment: Table tents in dining area, subject to spills, grease, condensation from drinks
Recommended Level: Q (25%) or H (30%)
Reasoning: QR codes will get dirty, wet, and worn from handling. Need high reliability. If restaurant logo is added, must use Level H.
Additional tip: Laminate or use waterproof materials to extend life, but high error correction is still essential.
Scenario 2: Business Card Contact Information
Environment: Professional business cards, high-quality printing, carried in wallets
Recommended Level: M (15%) without logo, H (30%) with logo
Reasoning: Business cards are usually well-printed and protected, but wallet wear can cause edge damage. Company logos are common on business cards, requiring Level H.
Data consideration: vCard contact info is typically short enough that Level H doesn't significantly increase size.
Scenario 3: Billboard Advertisement
Environment: Large outdoor billboard, exposed to weather, sun, rain, visible from distance
Recommended Level: H (30%)
Reasoning: UV exposure fades colors, rain and pollution cause degradation, needs maximum durability. Brand logo is essential for billboard advertising.
Special consideration: Size is not a constraint on billboards, so the slight increase in QR code density from Level H is negligible.
Scenario 4: Digital Display (Website, Email, App)
Environment: Perfect digital reproduction, no physical damage possible
Recommended Level: L (7%) or M (15%)
Reasoning: Digital displays have perfect clarity with no physical degradation. Lower error correction maximizes data capacity without risk.
Exception: If users are expected to screenshot and share (where compression artifacts may occur), use Level M or Q instead.
Scenario 5: Product Packaging
Environment: Varies - retail boxes, labels, shrink wrap, bottles
Recommended Level: Q (25%) for most packaging, H (30%) for rough handling
Reasoning: Packaging gets handled, stacked, potentially scuffed during shipping and retail display. Curved surfaces (bottles) may distort QR codes slightly.
Surface consideration: Corrugated cardboard and textured materials reduce effective scan quality, favoring higher error correction.
Testing Your Error Correction Choice
Before committing to mass production or permanent installation, thoroughly test your QR code under realistic conditions:
Pre-Production Testing Checklist
- Multiple devices: Test on various iPhone models and Android devices (older phones have weaker cameras)
- Different lighting: Indoor fluorescent, outdoor sunlight, dim restaurant lighting, bright reflective surfaces
- Various distances: Close-up (6 inches), arm's length (2-3 feet), across room (6+ feet for signage)
- Different angles: Straight-on and oblique angles (people don't always hold phones perfectly aligned)
- Realistic damage simulation: Intentionally obscure 10-15% of the code to test error correction
- Print quality test: Print one sample on actual material (paper stock, vinyl, fabric, etc.)
- Aging simulation: Expose test print to sun, water, handling to see how it degrades
Pro Testing Tip:
Create the same QR code at different error correction levels and test them side-by-side. You may find that Level M works perfectly for your use case, saving you from unnecessary size increases from Level H. Or you might discover that your specific environment requires Level H to achieve reliable scanning.
Common Error Correction Mistakes
Mistake #1: Using Level L for Everything
Some users choose Level L by default to minimize QR code size. This is dangerous for physical QR codes that will face any kind of damage, printing imperfections, or environmental exposure.
Solution: Only use Level L for perfect digital displays or when data capacity is absolutely critical and conditions are guaranteed pristine.
Mistake #2: Adding Logos Without Level H
The most common error correction mistake is adding a logo to a QR code generated with Level M or Q. This often works in testing but fails in real-world conditions with lighting variations or camera quality differences.
Solution: Always regenerate QR codes at Level H before adding any logo, no exceptions. The logo effectively "uses up" the error correction capacity.
Mistake #3: Assuming "More is Always Better"
While Level H provides maximum protection, it's not always necessary. For very long URLs or data, Level H might push you to a larger QR code version, making it visually bigger and potentially harder to fit in your design.
Solution: Match error correction level to actual environmental needs. Indoor, pristine conditions don't need Level H. Outdoor, harsh conditions do.
Mistake #4: Not Testing Error Correction Tolerance
Many people generate QR codes and never verify that the error correction actually works by intentionally damaging test codes.
Solution: Print test QR codes and intentionally obscure portions (with tape, marker, etc.) to verify the error correction performs as expected before mass production.
Technical Deep Dive: How Reed-Solomon Error Correction Works
For those interested in the mathematics behind QR code error correction, here's a simplified explanation:
Reed-Solomon error correction treats the QR code data as a polynomial equation. When generating the code, it adds extra "error correction codewords" calculated from the original data. These error correction codewords are like mathematical checksums that can reconstruct missing data.
The Process:
- Encoding: Original data is converted to polynomial form
- Error correction generation: Reed-Solomon algorithm calculates error correction codewords
- Combination: Original data + error correction codewords = complete QR code
- Scanning: Scanner reads all available modules (black/white squares)
- Error detection: Algorithm identifies corrupted or missing codewords
- Error correction: Uses error correction codewords to mathematically reconstruct damaged data
- Output: Original data is recovered even if portions were unreadable
The number of error correction codewords increases with each level (L < M < Q < H), providing greater reconstruction capability but requiring more space in the QR code.
Error Correction Level Quick Reference Chart
| Level | Damage Tolerance | Best Use Cases | Logo Support |
|---|---|---|---|
| L (Low) | 7% | Digital displays, perfect printing, maximum data | No |
| M (Medium) | 15% | General purpose, indoor use, good printing | Tiny only |
| Q (Quartile) | 25% | Outdoor signage, printed materials, default choice | Small |
| H (High) | 30% | With logos, harsh environments, critical reliability | Yes (20-26%) |
Conclusion
Understanding QR code error correction levels empowers you to create more reliable, professional QR codes optimized for your specific use case. The right error correction level balances data capacity against damage tolerance, ensuring your QR codes work reliably in their intended environment.
As a general rule: use Level Q (25%) as your default for most applications, upgrade to Level H (30%) when adding logos or expecting harsh conditions, and only drop to Level M (15%) or L (7%) when you have specific reasons to prioritize data capacity over reliability.
By choosing the appropriate error correction level, thoroughly testing before deployment, and following best practices for logo placement and environmental considerations, you'll create QR codes that scan reliably every time - even when conditions aren't perfect.
Create QR Codes with Customizable Error Correction
GoCreateQR lets you choose your error correction level (L, M, Q, or H) for perfect optimization of your QR codes.
Create Free QR Code →