What error correction does
Every QR code carries extra data so that a damaged or hidden part can be reconstructed. The amount is set when the code is made: level L recovers up to 7 percent of the data, M 15 percent, Q 25 percent, H 30 percent. The price is size: the same link needs more modules at H than at L, roughly a version or two larger.
That budget is what a logo, a picture or a scuff spends. A clean code at level H can lose nearly a third of its data modules and still read. One at L can lose a sliver.
The parts you can never cover
Everything else is data plus error-correction codewords, and that is the area a logo may eat into. Our generator never knocks out the patterns above; the logo plate only clears data modules.
The three big squares in the corners (finder patterns). Cameras find the code by them. No logo, no decoration, no cropping.
The thin alternating lines joining the squares (timing patterns), which tell the decoder the grid pitch.
The small square near the bottom-right in codes of 25 modules and up (alignment pattern), used to correct perspective.
The two strips of format information beside the finder patterns, which say which error correction level and mask were used.
The quiet zone around the code.
How much logo, in numbers
Why does a logo covering 9 percent of the area threaten a 30 percent budget? Because the budget is counted in codewords (blocks of eight modules) and a square logo damages many codewords partially, which costs almost as much as damaging them fully. Real tolerance is around a third of the headline number. The scan check in the generator is the honest measure.
| Logo width as share of code width | Area covered | Minimum level | Comment |
|---|---|---|---|
| 15 percent | about 2 percent | M | Safe anywhere |
| 20 percent | about 4 percent | Q | Comfortable with a plate |
| 25 percent | about 6 percent | H | Fine on good phones, test the small-print case |
| 30 percent | about 9 percent | H | Fails on cheap cameras and small prints |
| 35 percent and up | 12 percent and up | none | Do not |
Pictures inside the code spend the budget differently
The picture mode does not cover modules. It shrinks each module to the centre of its cell and draws the picture in the rest. Decoders sample module centres, so in theory nothing is lost; in practice, blur and small prints let the picture bleed into the centres, which is why picture codes run at level H, print larger, and go through the blur and small-print tests before download.
Settings that keep a decorated code reliable
Level H for anything with a logo or picture; Q for a small logo on a short link.
Plate behind the logo in the background colour, so the decoder sees a clean light area rather than a half-covered module.
Logo under 22 percent of the code width.
Short content, so the modules stay large at print size.
Margin 2 or more, matte stock, dark dots on a light background.