Every QR code includes redundant data that allows it to be read even when part of the image is damaged, dirty, or obscured. This redundancy is called error correction, and it is one of the features that makes QR codes far more resilient than traditional barcodes. The QR specification defines four error correction levels, each trading data capacity for damage tolerance. Choosing the right level depends on how the code will be printed, displayed, and used.
The Four Levels
Level L (Low) recovers from approximately 7 percent data loss. It produces the smallest, least dense codes and maximizes data capacity. Use it for digital screens, clean indoor environments, and situations where the code will never be damaged.
Level M (Medium) recovers from approximately 15 percent data loss. This is the default for most general-purpose applications. It balances density and resilience well for printed materials in controlled environments like offices, retail stores, and event venues.
Level Q (Quartile) recovers from approximately 25 percent data loss. Good for codes printed on packaging that will be handled, stacked, and potentially scratched during shipping and retail display.
Level H (High) recovers from approximately 30 percent data loss. Required when a logo or image is overlaid on the center of the code, because the overlay physically covers data modules that must be recovered through error correction. Also recommended for outdoor signage, industrial environments, and any code exposed to weather or heavy wear.
How Error Correction Works (Reed-Solomon Codes)
QR codes use Reed-Solomon error correction, a mathematical algorithm also used in CDs, DVDs, satellite communications, and deep-space probes. The algorithm divides the data into blocks and generates parity codewords for each block. When a scanner reads the code, it uses those parity values to detect and correct errors in the data. The more parity codewords (higher error correction level), the more damage the code can tolerate, but the less room remains for actual data.
Impact on Data Capacity
A Version 10 QR code (57x57 modules) at Level L can store 652 alphanumeric characters. The same version at Level H stores only 382 characters. That is a 41 percent reduction in capacity. For short data like URLs or phone numbers, this trade-off is negligible. For longer data like vCards or detailed text, it can be the difference between a scannable code and one that is too dense for small-format printing.
Choosing the Right Level
For most web URLs: Level M is sufficient. For codes with a center logo: Level H is mandatory. For outdoor or industrial use: Level H. For maximum data in a small space: Level L, but only in clean, controlled environments. When in doubt, use Level H and accept the slightly larger code size; the reliability gain is almost always worth it.
Related Tools
All our generators let you choose the error correction level: URL, WiFi, vCard, Text. For print sizing based on your chosen level, see the size guide. For a broader comparison of encoding technologies, read QR code vs barcode.
Frequently Asked Questions
Can error correction fix a torn or cut QR code?
Yes, up to the percentage allowed by the chosen level. At Level H, up to 30 percent of the code area can be physically missing and the scanner will still decode it correctly. This makes QR codes remarkably resilient compared to linear barcodes, which fail with even minor damage.
Does higher error correction make the code harder to scan?
No. Higher error correction makes the code more reliable, not less. The trade-off is that the code becomes denser (more modules for the same data), which means it needs to be printed slightly larger for the same scanning distance. But the actual scanning process is equally fast at any level.
Why is Level H recommended for codes with logos?
A center logo physically covers data modules. The scanner cannot read those covered modules, so it relies on error correction to reconstruct the missing data. Level H tolerates up to 30 percent coverage, which is enough for most reasonable logo sizes (up to about 25 to 30 percent of the code area).
Can I mix error correction levels within one QR code?
No. Each QR code uses a single error correction level throughout. The level is encoded in the format information pattern that the scanner reads first, before decoding any data.
What happens if damage exceeds the error correction capacity?
The scanner will either fail to decode the data entirely or produce corrupted output. Most modern scanner apps display an error message rather than showing garbled data. There is no graceful degradation: the code either works correctly or does not work at all.