Have you ever scanned a QR Code with a company logo in the middle and it worked perfectly — but how? The image technically "covers" part of the code. The answer lies in error correction: a built-in mechanism that keeps a QR readable even when part of it is damaged, dirty, or obscured.
Understanding the four levels (L, M, Q, H) makes a real difference when choosing the right generator for your context: an industrial QR code needs very different settings than one displayed on a smartphone screen.
What is error correction?
QR Codes are based on Reed-Solomon, an error-correction algorithm originally developed for CDs and space communications. The idea is straightforward: when the QR is generated, some of the modules (the black squares) don't carry useful data — they carry redundancy. If some modules are destroyed or covered, the reader uses that redundancy to reconstruct the original information.
That's why a torn QR Code still works, and why placing a logo in the center doesn't break the scan — as long as the percentage of "hidden" area doesn't exceed what the chosen level supports.
The 4 error correction levels
| Level | % recoverable | Relative QR size | When to use |
|---|---|---|---|
| L | ~7% | Smallest / cleanest | Digital screen, controlled environment |
| M | ~15% | Medium | Standard print, general use |
| Q | ~25% | Larger | Mildly dirty environments, small logos |
| H | ~30% | Largest / densest | Logo in center, industry, outdoors, sun |
Level L — Low
Recovers up to 7% of data if part of the QR is damaged. Generates the most compact and clean code, ideal for computer or phone screens where scanning happens in perfect conditions.
Level M — Medium
Recovers up to 15%. This is the default for most generators. Works well for standard printing — flyers, business cards, packaging — where small smudges or scratches are possible.
Level Q — Quartile
Recovers up to 25%. A good choice when the QR will be used in moderately dirty environments or when you want to add a small logo without compromising readability.
Level H — High
Recovers up to 30%. This is the right level for QR codes with a large logo in the center, industrial environments (grease, dust, moisture), sun-exposed billboards, or surfaces that wear over time.
The trade-off: more protection = denser code
The higher the correction level, the more redundancy modules are added. With the same data, a level-H QR has far more squares than a level-L QR. This means:
- Smaller code = easier to scan on small prints or from a greater distance.
- Denser code = harder to scan if the physical size is insufficient.
If you use level H with a very long URL, the QR can become so dense that common cameras will struggle. The solution is to shorten the link — a link shortener fixes this, and a dynamic QR also stores a short link internally.
How Code2Scan adjusts the level when adding a logo
When you use the Code2Scan QR Code generator and upload a logo, the generator automatically raises the level to Q or H — depending on the logo size. That way, the area covered by the image stays within the recovery limit and the QR keeps working.
Want to customize the logo in your QR? See the full guide: QR Code with custom logo.
Step by step: choosing the right level
- Define the QR's destination — screen, paper, billboard, industrial surface?
- Will there be a logo? If yes, use Q or H. If not, L or M usually suffice.
- Calculate the physical size — level-H QR with a long URL needs at least 3–4 cm. See the rules in minimum QR Code size.
- Test before printing — scan with your phone camera on the Code2Scan Scanner to validate.
- Shorten the link if needed — less data = less dense QR even at a high level.
Common mistakes
❌ Using level H when you don't need to
Many people hear "H is safer" and choose it without thinking. If the QR goes on a clean screen, level H only makes the code denser and harder to scan — with no real benefit.
❌ Adding a logo without adjusting the level
Adding a logo to the center of a level-L QR covers more than the 7% it can recover. The result: a QR that won't scan. Always use Q or H when inserting a logo.
❌ Combining long data + high level
A 200-character URL + level H = a tiny QR becomes unreadable. Shorten the link or increase the physical size of the code.
❌ Trusting only visual inspection
A QR can look fine and still fail on less capable cameras. Always test with at least two devices before large-scale printing.
Check out more classic pitfalls in common QR Code mistakes.
Summary
- Reed-Solomon error correction lets the QR be read even with part of it covered or damaged.
- L (~7%) — for screens, clean environments; most compact code.
- M (~15%) — general default; standard printing.
- Q (~25%) — small logo or mildly dirty environment.
- H (~30%) — large logo, industry, outdoors; densest code.
- Long data + high level = use a short link to avoid over-densifying.
- Always test before printing at scale.
Ready to create a QR Code with the ideal correction level — and with a logo if you want? Open the Code2Scan generator and customize it in seconds.