Error correction gives you a damage budget. A logo spends it before the code is printed, and the budget is counted in codewords, not in area — which is why “up to 30%” is the wrong way to think about it.
WHAT THIS ARTICLE DOES AND DOES NOT TELL YOU✓The four error correction levels recover roughly 7%, 15%, 25% and 30% of a code’s codewords (ISO/IEC 18004).✓Those percentages are of data codewords, not of the code’s area, and finder patterns are not covered by them at all.✓Raise the level before you add a logo, and the logo is spending budget the code still has.✓No measured coverage limit is given. That needs printing and scanning, and ours has not run.
Error correction is a budget
A QR code stores its data with redundancy, so a decoder can recover the whole message when part of it is damaged. ISO/IEC 18004 defines four levels: L recovers roughly 7% of the codewords, M about 15%, Q about 25% and H about 30%. A logo works because it is damage the code can correct.
The catch is that the same budget has to cover everything else: a scuff, a fold, a reflection, a printer defect. A logo that uses the whole budget leaves a code that scans on a clean screen and fails on a worn sticker.
LevelCodewords recoverableWhat it costs
Labout 7%Smallest code for a payload
Mabout 15%The usual default
Qabout 25%More modules for the same data
Habout 30%The most modules for the same data
Recovery is of codewords. Area covered and codewords lost are not the same number.
Why area is the wrong measure
The recovery figures are percentages of codewords, and codewords are not laid out as neat blocks of area. Each one is eight modules scattered across a zigzag path, and they are interleaved across error correction blocks. A logo in the centre damages some codewords completely and others partly, and some blocks more than others. Covering 20% of the area is not the same as losing 20% of the codewords — it can be better or worse.
And some parts of the code are not data at all. The three finder squares in the corners, the alignment pattern, the timing lines and the format information are what a decoder uses to find and orient the code. Error correction does not protect them. A logo, or a design flourish, that touches them can make a code unreadable however high the level is.
Error correction protects the data. It does nothing for the corners that tell a camera there is a code.
How to place a logo
Choose level Q or H first, then add the logo — not the other way round. Keep it in the centre, clear of the finder patterns, the timing lines between them and any alignment pattern. Keep it well inside the level’s budget so the rest of the budget is still there for wear. Then check the result: the scanability report on this site measures how much of the symbol the logo covers and tells you which parts it touches.
What this article is not
The recovery percentages are the standard’s level definitions, not measured survival rates.
No maximum logo size is given; it depends on version, level, placement and wear, and needs a study.
See what your logo covers
The report measures logo coverage and checks the finder patterns and quiet zone, before you print.
We’d like to count visits with Google Analytics and see where pages confuse people with Microsoft Clarity. Both set cookies, and nothing loads until you choose. Anything you type stays hidden from recordings.
Change it any time from “Cookie settings” at the foot of every page. Cookie policy