QR Code Error Correction — ECC Levels L, M, Q, H Explained
One of the most powerful features of QR codes is error correction — the ability to remain scannable even when partially damaged, dirty, or obscured. Understanding the four ECC levels and when to use each one is key to generating QR codes that work reliably in the real world.
What Is QR Code Error Correction?
Error correction in QR codes works using the Reed-Solomon algorithm — the same mathematical technique used in CDs, DVDs, and satellite communications. When you generate a QR code, redundant data (error correction codewords) is added alongside your actual data. If a portion of the QR code is damaged — smudged, scratched, covered by a logo, or partially torn — the error correction data can reconstruct the missing information.
The amount of error correction built into a QR code is defined by its ECC level, which determines what percentage of the code can be damaged while still remaining scannable. The trade-off is data capacity: higher error correction means more redundancy, which means less room for your actual data or a larger physical code size for the same amount of data.
The Four ECC Levels
| Level | Recovery Capacity | Codewords Added | Best For |
|---|---|---|---|
| L (Low) | ~7% | Minimal | Clean digital screens, simple links where damage is unlikely |
| M (Medium) | ~15% | Standard | General use — the default for most QR code generators including ZeroQR |
| Q (Quartile) | ~25% | High | Product labels, packaging, areas with moderate wear and tear |
| H (High) | ~30% | Maximum | Outdoor signage, physical prints exposed to weather, codes with logo overlays |
When to Use Each Level
L (7%): Use for digital-only QR codes — those displayed on websites, emails, or screens where there's no risk of physical damage. The lower error correction allows more data in a smaller code grid.
M (15%): The sweet spot for most uses. Provides reasonable protection against minor smudges or scratches without significantly increasing the grid size. ZeroQR defaults to Level M because it handles the vast majority of real-world scenarios.
Q (25%): Upgrade to Q when printing QR codes on products, labels, or packaging that will be handled frequently. The extra redundancy protects against folds, scuffs, and moderate wear.
H (30%): Use H for outdoor applications — posters, construction signage, shipping labels — or when you plan to overlay a logo on the QR code. The 30% recovery capacity gives you room to place a design element over the code without breaking scanability.
How ECC Affects QR Code Size
Higher error correction levels require more modules (the individual black and white squares) in the QR code grid. This means that for the same amount of data, a QR code generated at Level H will be physically larger or have more tightly packed modules than one at Level L. If you're generating QR codes for a business card or small product label, this matters — a denser QR code is harder to scan from a distance and more susceptible to blur.
The general rule: use the lowest ECC level that provides adequate protection for your use case. There's no benefit to using Level H for a QR code that will only appear on a digital screen — it just makes the code needlessly dense.
How to Choose ECC in ZeroQR
ZeroQR lets you select your error correction level with a single click — no technical knowledge needed. In the Input Stream panel, simply click L (7%), M (15%), Q (25%), or H (30%) before generating. The QR code preview updates instantly, and you can toggle between levels to see how the pattern changes before downloading.
Pick your ECC level, choose your resolution, download instantly
[ GENERATE QR CODE ]