QR codes have a built-in superpower: they can be partially damaged and still work. A scratched sticker, a coffee stain, or even a logo covering the center — the QR still scans. This resilience comes from error correction, a mathematical system that adds redundant data so lost information can be reconstructed.
Understanding error correction levels helps you make better choices about QR code design, logo placement, and durability.
The Four Levels
QR codes use Reed-Solomon error correction, the same mathematical technique used in CDs, DVDs, and satellite communications. There are four levels:
Level L (Low) — recovers up to 7% of data. The minimum redundancy. Produces the simplest, least dense QR code. Best when you need the smallest possible QR or when the code will be in a protected, clean environment.
Level M (Medium) — recovers up to 15% of data. The default level used by most QR generators. A good balance between density and resilience. Handles minor smudges, small scratches, and slight printing imperfections.
Level Q (Quartile) — recovers up to 25% of data. Significantly more resilient. Good for QR codes in environments where moderate damage is expected — outdoor signage, warehouse labels, restaurant table stickers that get wiped daily.
Level H (High) — recovers up to 30% of data. Maximum resilience. Required when placing a logo in the center of the QR code (the logo obscures data modules, so error correction must compensate). Also best for harsh environments — construction sites, industrial equipment, outdoor installations.
How It Affects QR Code Density
Higher error correction means more redundant data, which means more modules (dots) in the QR code. More modules means a denser, more complex-looking pattern.
For the same data (say, a 30-character URL), the QR code versions look roughly like this:
- Level L: Simplest pattern, fewest modules, easiest to scan from distance
- Level M: Slightly more complex, still easy to scan
- Level Q: Noticeably denser, needs to be a bit larger for reliable scanning
- Level H: Most complex, needs the most space for reliable scanning
This trade-off matters when space is limited. A QR code on a small product label benefits from Level L or M (simpler = easier to scan small). A QR code on a large poster can afford Level H for maximum durability.
When to Use Each Level
Level L: Maximum efficiency
Use when the QR code will be in a controlled, clean environment (screen display, protected print), when space is very limited and you need the simplest possible code, when the data content is long (the QR is already dense), and when fast scanning from distance matters.
Examples: digital displays, in-app QR codes, large-data QR codes (long URLs, vCards with many fields).
Level M: Default choice
Use for general-purpose QR codes where no special conditions exist. This is the right choice for most business cards, flyers, posters, and standard marketing materials.
Examples: business cards, flyers, email signatures, standard packaging.
Level Q: Enhanced durability
Use when the QR code will be exposed to moderate wear, when it might get partially covered or smudged, or when the environment is variable (outdoor events, retail stores with high traffic).
Examples: restaurant table stickers, retail shelf tags, event wristbands, frequently handled materials.
Level H: Maximum resilience or logo placement
Use when adding a logo to the center of the QR code (the logo obscures up to 20-25% of the code, so you need H to compensate). Also use in harsh environments: construction, manufacturing, agriculture, outdoor permanent signage.
Examples: branded QR codes with logos, industrial equipment tags, outdoor permanent signage, QR codes on vehicles.
Error Correction and Logo Insertion
This is the most practical application of error correction knowledge. When you place a logo in the center of a QR code, the logo covers data modules. The error correction system treats these covered modules as "damaged" and reconstructs the missing data from the redundant information.
For logo insertion to work reliably:
- Use Level H error correction (30% recovery)
- Keep the logo to no more than 20-25% of the QR area
- Add white padding around the logo to separate it from surrounding modules
- Always test the result — scan with multiple phones
If the logo is too large or the error correction is too low, the QR becomes unscannable. There's no graceful degradation — it either works or it doesn't.
Error Correction and Data Capacity
Higher error correction reduces the effective data capacity of the QR code. For a given QR code version (size), Level H can store less data than Level L because more of the space is used for redundancy.
In practice, this matters for very large data payloads. For typical URLs (under 100 characters), all four levels work comfortably in standard QR code sizes. For very long data (full vCards, long URLs with UTM parameters), you might need to use Level M or L to keep the QR code a reasonable size.
How to Choose: Decision Tree
- Are you adding a logo? → Level H
- Will the QR be outdoors or in a harsh environment? → Level Q or H
- Is space very limited? → Level L
- None of the above? → Level M (default)
Can You See the Difference?
To the casual observer, QR codes at different error correction levels look similar — just patterns of black and white squares. The difference is in the density. An expert can tell by the complexity of the pattern relative to the data length, but for practical purposes, the only way to know the level is to check the generator's settings.
Create Your QR Codes
At qree.app, QR codes are generated with optimal error correction for your use case. Customize, download, and print with confidence.