Why a center logo doesn't break the QR (when done right)
QR codes have built-in Reed-Solomon error correction. That means the code includes redundant data — partial copies — so even if part of the QR is smudged, scratched, folded, or covered, the reader can reconstruct the original content. There are four levels, each tolerating a different percentage of damage.
| Level | Damage tolerance | When to use |
|---|---|---|
| L | 7% | Clean QR, close-range scan, short content |
| M (default) | 15% | General use, no logos |
| Q | 25% | Dirty prints, humid or high-friction environments |
| H | 30% | Center logos, outdoor vinyl, packaging |
The logo trick is exactly that: you use level H, place the logo covering up to 25-28% of the area, and the error correction reconstructs whatever you covered. qr.util.ar's generator forces H automatically when you upload a logo — you can't lower it while the image is loaded. If you use another tool, make sure it's set to H before exporting.
How much of the QR you can actually cover
Even though theory says 30%, in practice it's smarter to stay below 25% for two reasons: the reader needs a safety margin, and the three big squares at the corners (the 'eyes') can never be covered, not even slightly. Those three squares are the orientation markers the camera looks for first. If your logo even brushes them, the scan fails — even with H tolerance.
| Coverage | Success rate (recent iPhone) | Success rate (mid-range Android) |
|---|---|---|
| 15% | 100% | 100% |
| 20% | 100% | 98% |
| 25% | 98% | 92% |
| 28% | 92% | 80% |
| 30% | 75% | 55% |
| 35% | 40% | 20% |
Which image to use as a logo
Format
PNG with transparency or SVG. JPG works but the JPG's square background will clash with the QR. If you use JPG, the tool paints a white square behind it (helps with readability) but it looks worse. SVG is ideal — scales perfectly without pixelation and stays crisp at any print size.
Color and contrast
The logo should have good internal contrast (its details must remain visible when shrunk to 22% of the QR). Logos with thin lines disappear — prefer simplified, monochrome, or low-color versions. If your brand has an 'icon' or 'isotype' simplified version, use that.
Resolution
Minimum 256x256 px so it scales well. If you'll print the QR at 8 cm or more, use 512x512 or larger. SVG doesn't have this problem — scale freely.
Common mistakes
| Mistake | Why it fails | Fix |
|---|---|---|
| Giant logo (over 30%) | Covers too many QR modules | Drop it to 22-25% |
| Logo without white padding around it | Logo pixels blend into QR modules | The generator adds padding automatically — don't disable it |
| Off-center logo | Covers part of the corner orientation markers | Use the tool — it auto-centers |
| Logo in the same color as the QR | No contrast, the reader confuses it with modules | Use a contrasting color or a strong white background |
| Logo uploaded as JPG with colored background | JPG background takes more area than the actual logo | Convert to transparent PNG or SVG |
| ECC stayed at M instead of H | Without H tolerance, covering 22% exceeds the error budget | Force H in the advanced panel (auto on qr.util.ar) |
How to test before printing
- Generate the QR with the logo in the tool's preview.
- Scan the screen with your own phone. If it works on yours, that's not a guarantee it works on all.
- Ask someone with a different phone (ideally another brand, 2-3 years old) to scan it.
- Print a small version (5x5 cm) and test it with the camera at 20 cm, under both warm and cool lighting.
- If it passes all four steps, send to print. If it fails any, drop the logo size to 18% and try again.
Combining logos with visual styles (rounded, dots)
qr.util.ar lets you combine the logo with non-classic module styles (circular dots, rounded modules, custom-shaped eyes). It works, but it needs extra care: 'dots' and 'extra-rounded' styles produce less continuous black area, which reduces Reed-Solomon robustness in practice. If you use 'dots' style + logo, stay below 20% logo coverage instead of 25%.
Try it now
The generator below has a sample link loaded. Upload your logo in the 'Advanced' panel, adjust the size with the slider, and download the PNG. The tool forces ECC=H automatically when there's a logo — you don't need to touch anything else.