10 QR Code Design Mistakes That Stop Codes From Scanning
From low contrast to over-cropping, these are the practical mistakes that turn beautiful QR codes into unscannable ones.
QR codes are surprisingly hard to break. Their built-in error correction can survive scratches, dirt, glare, even a center logo — up to a point. The trouble is that designers tend to push past that point in pursuit of an on-brand look, and when a QR code stops scanning, you usually don't find out until it's printed on 5,000 takeout boxes.
Here are ten of the most common mistakes I see, what causes each one, and the cheapest fix.
1. Inverting the colors
QR scanners expect dark modules on a light background. That contrast is what tells the camera which squares are "on" and which are "off." If you flip it — light modules on a dark background — many older scanners refuse to read it, even though the data is technically intact.
Newer phone cameras handle inversion fine, but you can't assume everyone in your audience has a recent phone. Print dark on light unless you have a very good reason not to.
2. Using low-contrast colors
Pastel pink on white. Mid-gray on light gray. A subtle brand color on a slightly different brand color. These look great in mockups and fail catastrophically in fluorescent restaurant lighting.
Treat QR contrast like accessibility contrast: aim for at least a 4.5:1 ratio between the QR color and the background. The same contrast checker you'd use for body text on a website works here.
3. Skipping the quiet zone
Every QR code needs a quiet zone — a margin of clear space around the code where nothing else can be printed. The spec says four modules wide; in practice, leave at least the width of two QR squares.
When you cram a QR code into a tight layout flush against an image, a border, or an edge, you give scanners no room to find the code's perimeter. They give up.
4. Putting a logo over a finder pattern
The three big squares in the corners of every QR code are finder patterns. They're what tell the scanner where the code is and how it's rotated. Lose any of the three and the scanner can't orient.
Always put your logo dead center. Never near a corner. If your logo is wide and rectangular, find a square version or risk clipping into the alignment patterns.
5. Making the logo too big
Even level H error correction tops out around 30% obscurity. A logo that covers 40–50% of the code looks great on screen and scans on exactly zero phones in a parking lot. Keep the logo within 25–35% of the code's width.
If you want a really prominent logo, increase the QR code's overall size — don't increase the logo's share of it.
6. Cramming a 200-character URL into the code
QR codes scale: more data means more, smaller modules. A 300-character URL with level H correction creates a microscopic, pixelated mess that's nearly impossible to print well at consumer sizes.
Shorten links before encoding them. Use a UTM-tracked short URL on a domain you control, or a free shortener if you trust its longevity. Going from 250 characters to 25 can drop the code by five or six QR versions.
7. Printing too small
A QR code prints reliably at roughly 1/10th of the expected scanning distance. If someone has to scan from arm's length (about 30 cm), the code needs to be at least 3 cm wide. From across a parking lot at 5 m, the code needs to be 50 cm wide.
For business cards, 1.5–2 cm is the floor. For posters at 3 m, you need 30 cm. When in doubt, print a test at the actual size and try scanning from the actual distance before signing off.
8. Coating it with a glossy lamination
Glossy laminates and varnishes look beautiful and reflect indoor lighting straight into the camera. Phone cameras compensate well, but in restaurants, gyms, and stores with overhead fluorescents, glossy QR codes can become unreadable from the wrong angle.
Use matte or satin finishes for QR codes whenever possible.
9. Using a generic shortener with a sketchy domain
Some URL shorteners use very short, anonymous domains that trigger iOS Safari's anti-phishing warnings. Users see a red modal asking if they really want to visit, and most back out.
Either use a major, trusted shortener (bit.ly, tinyurl.com) or — better — set up a vanity short domain on your own infrastructure.
10. Skipping the test scan
This is the cheapest mistake to fix and the most common. After you've generated and downloaded the code, scan it from at least two phones (one iPhone, one Android), in the actual lighting conditions where it will live, at the actual print size. Try the default camera app, not just specialized QR-scanner apps; that's what real users have on their lock screens.
If anything feels even slightly off — slow recognition, requires a weird angle, only works in bright light — fix it before printing. It's essentially free now and very expensive later.
A pre-flight checklist
- Dark on light, with at least 4.5:1 contrast.
- Quiet zone of at least 2 modules around all four sides.
- Logo centered, square-ish, 25–35% of the code's width.
- URL kept short. UTM parameters allowed but in moderation.
- Print size at least 1/10 of expected scanning distance, with a floor of 1.5 cm.
- Matte finish if possible.
- Test scan from two phones before sending to print.
If you're generating the code right now, QR This! already enforces several of these defaults — high error correction with logos, a generous margin, capped logo size — but most of the rest is up to you. Print one, scan it from across the room, and ship it.