What QR code error correction actually does
Every QR code is built from a grid of black and white squares called modules. Together, those modules store your data — but they also store extra information that can rebuild the original if part of the code gets damaged, dirty, or covered. That extra redundancy is called QR code error correction.
Think of it like a backup copy. If someone spills coffee on your printed QR code, scratches a sticker, or you slap a logo right across the middle, the scanner can still read it because the lost patterns can be mathematically reconstructed from the surrounding blocks. Without error correction, a single damaged area could make the whole code useless.
The four error correction levels explained
QR codes come with four built-in levels of error correction. Each level trades storage space for resilience:
- L (Low): recovers about 7% of lost data. Smallest QR code, least redundancy.
- M (Medium): recovers about 15% of lost data. The industry default.
- Q (Quartile): recovers about 25% of lost data. Good for outdoor or printed use.
- H (High): recovers about 30% of lost data. Largest QR code, best resilience.
Most generators let you pick between these. If you have no strong reason to change it, M is a safe default for everyday QR codes like URLs, contact cards, and Wi-Fi logins.
When you want a higher correction level
Bump up to Q or H whenever your code might face rough conditions — printed stickers on packaging, outdoor signage, business cards that get bent, or anything scanned in low light. Higher correction also lets you put a logo on your QR code without making it unscannable, since the logo is treated as "damage" the code can recover around.
If you're printing a clean, full-size code on a flat surface indoors, L or M is usually plenty. Save the larger sizes for codes you actually expect to take some abuse.
The trade-offs nobody warns you about
Error correction isn't free. The higher the level, the more modules the QR code needs to store the same data, which makes the pattern denser. In practice, this means a slightly bigger printed size for the same information.
There's also a data cap. The more redundancy you add, the less room you have for actual content. A short URL fits comfortably at level H. A long paragraph of text with a vCard attached might fail to generate on H and quietly drop down — or refuse to generate at all. Keep your payload short and stick to your real-world target level.
Print size matters more than most people think. A high-correction QR code is still scannable at a smaller size than people expect, but it has to physically fit the modules, so don't try to shrink a level-H code onto a postage stamp.
Which level should you pick?
Match the level to where the code lives and how it'll be scanned:
- Indoor print, clean surface, short URL: L is fine.
- General business use (the usual pick): M covers almost everything.
- Outdoor, packaging, anything with a branded QR code: go Q or H.
- Harsh environments, scannable even when damaged: H.
When in doubt, run a quick test. Generate the same code at two levels, print both at the intended size, and try scanning them with a few different phones.
Quick recap
Error correction is the part of a QR code that keeps it scannable when things go wrong — prints get scratched, stickers get faded, logos sit on top of the pattern. Pick L when size matters most, M for general everyday use, and Q or H when the code needs to survive rough handling or carry branding on top.
If you want to try different levels on the same code (and throw a logo on it to see the effect), QR Code Rush lets you switch levels in one click when you generate.
Ready to create your own QR code?