August 12, 2026 · 10 min read
Why Your QR Code Isn't Scanning (And How to Fix It)
Why Your QR Code Isn't Scanning (And How to Fix It)
You printed 500 flyers. Your QR code is dead center. And nobody's scanning it.
This happens more often than you'd think. A QR code that works perfectly on your screen fails in the real world—not because the code itself is broken, but because of how it was designed, sized, or printed.
The good news: most scanning failures are preventable. They come down to four fixable problems: size, contrast, error correction, and design interference. This post walks you through each one and shows you exactly how to avoid them.
Problem 1: Your QR Code Is Too Small
The smallest readable QR code depends on the distance from which it's scanned.
There's a simple ratio: the QR code's width should be at least 1 inch (25mm) for every 10 inches (25cm) of typical scanning distance.
Breaking that down into real scenarios:
- Business cards (3.5" × 2"): minimum 1" × 1" code (it'll work, barely)
- Flyers/posters (8.5" × 11"): minimum 1.5" × 1.5" code
- Window decals (readable from 6 feet): minimum 2" × 2" code
- Billboard or storefront (readable from 20+ feet): 4" × 4" or larger
- Product labels (held in hand): 0.5" to 1" code works
Why size matters: QR codes contain data in a grid of black and white squares. When the code is too small, the camera sensor can't distinguish individual squares. The scanner squints, can't read the pattern, and gives up.
How to fix it:
- Know your distance. Where will people scan from? How far away are they standing?
- Use the 1-inch-per-10-inches rule as a baseline.
- Test it before printing. Hold your phone at the actual scanning distance and see if it reads smoothly (should read within 1–2 seconds).
- If it hesitates, go bigger. A code that's 1.5x larger will always outperform one that's the minimum size.
When designing materials like flyers or posters, give your code at least 0.25 inches of white space (quiet zone) around all sides. That white border isn't decorative—it's functional. It tells the scanner "the data starts here."
Problem 2: Contrast Is Broken
A QR code is black squares on a white background. That's the standard. And for a reason: maximum contrast = maximum scannability.
When contrast fails, scanning fails. Common culprits:
- Light gray on white: Almost invisible to cameras.
- Dark blue on black: Looks fine to the eye; scanner can't read it.
- Pastel colors: Trendy, but the camera can't see the squares clearly enough.
- Reversed (white code on dark background): Works only if you invert the entire design—and many people mess this up.
- Photos or textures as background: Even if you can barely see it as a human, the camera definitely can't.
The rule is simple: black code, white background. If you want color, use bright, saturated colors for the background (bright yellow, bright blue, bright red) and keep the code black. Even then, test it first.
How to fix it:
- Stick with black and white unless you're testing a specific alternative.
- If you use a color background, make sure the background is light and the code is dark (or vice versa, inverted).
- Avoid gradients and textures behind the code. Use solid colors only.
- Test before printing. Scan it under the same lighting conditions where it'll actually be scanned.
- On printed materials, watch for ink bleed. Cheap printers sometimes smudge the edges, killing contrast.
If you're adding a logo to your QR code, that logo must not cover more than 10–15% of the code. And it must have contrast against whatever's behind it.
Problem 3: Error Correction Is Set Too Low
QR codes have a built-in feature called error correction level. It allows the code to be read even if part of it is damaged, dirty, or obscured.
There are four levels:
- L (Low): ~7% of the code can be damaged and still scan
- M (Medium): ~15% can be damaged (most common default)
- Q (Quartile): ~25% can be damaged
- H (High): ~30% can be damaged
Most QR code generators default to M or Q. That's fine for controlled environments (like a website or app). But for printed materials that will be exposed to dirt, wear, sun damage, and partial obstruction, you want H (High).
High error correction adds a few more data squares to the code, making it slightly larger, but it's worth it. A code printed at 2" × 2" with high error correction will survive bent corners, stains, and partial obstruction. A code at the same size with low error correction might fail if the corner gets folded.
How to fix it:
- Always use H (High) error correction for printed QR codes.
- Use M or Q only for digital displays or codes that won't be exposed to wear.
- Check your QR code generator's settings. TwoDollarQR uses high error correction by default, so you don't have to think about it.
Problem 4: Your Design Is Overlapping the Code
This is the silent killer. You designed a beautiful layout, placed your code on top of a photo or gradient, added text that overlaps the corner, or printed it over a pattern.
None of those work.
QR codes need to be discrete elements. They live in their own space. They can have a white border and sit on a solid background, but they can't have design elements interfering with the black and white squares.
Common design sins:
- Placing the code on top of a product photo: The patterns in the photo interfere with the code's data squares.
- Overlaying the code with semi-transparent text or logos: Even at 30% opacity, it breaks the contrast.
- Printing the code on a textured background (like fabric, cardboard with visible texture, or rough surfaces): The texture disrupts the data pattern.
- Using a rounded-corner border: If the corners of the code itself get clipped, the code fails.
How to fix it:
- Give the code a plain background. White is best. Solid colors are acceptable if contrast is high.
- Don't overlap anything on top of the code. Not text, not logos, not graphics.
- Leave white space around it. The quiet zone (0.25" minimum) must be solid white.
- Test on the actual material before full production. Print a sample and scan it from the expected distance.
Ready to track every scan? Create your first dynamic QR code for $20/year →
How to Test Before You Print
Don't guess. Test. It takes 60 seconds.
Step-by-step test process:
- Generate your code at full size using your QR code generator.
- Print a sample at actual size on regular paper.
- Hold it at the distance where people will scan (6 inches for a business card, 3 feet for a flyer, etc.).
- Scan it with your phone's camera app (not a dedicated QR app—use the default camera). Try multiple phones if possible (iPhone, Android).
- Time how long it takes. A good code reads in under 2 seconds. If it takes longer or hesitates, go back to step 1 and increase the size.
- Try different angles. Scan at 45 degrees, straight on, and from the side. It should work from all angles.
- If it fails, troubleshoot:
- Size too small? Make it 25% larger.
- Contrast bad? Switch to pure black on white.
- Partial obstruction? Re-do the layout so nothing overlaps.
- Once it passes, print your full batch.
This one test saves hundreds or thousands in wasted print runs.
Using Dynamic QR Codes to Prevent Future Problems
Static QR codes (the ones you generate once and that's it) are permanent. If you print 10,000 of them and then realize the destination URL is broken or the event has moved, you're stuck.
Dynamic QR codes solve this. They're codes you can edit after printing. Change the URL, landing page, or destination without reprinting.
Beyond editability, dynamic codes give you something static codes never can: scan analytics. You see how many people scanned, when they scanned, and sometimes where.
For any printed marketing material—flyers, direct mail, product packaging, business cards, yard signs—a dynamic code is safer and smarter. If you're tracking results anyway (and you should be), dynamic is the only sensible choice. For just $20 per year, you get unlimited scans, analytics, and the ability to update where the code points without reprinting.
That's a completely different category from tools that charge $60–$720 per year for the same features.
Real-World Example: Why This Matters
A contractor prints 1,000 yard signs to advertise a new development. The QR code is 1 inch × 1 inch, printed in dark blue on a navy background. People drive by at 30 mph, pull over, and try to scan from about 8 feet away.
Result: Almost nobody scans. The code's too small for that distance, and the contrast is too low. Even phones that can read it take 5+ seconds—and most people give up after 2.
Now imagine: same sign, same message, but the code is 2 inches × 2 inches, black and white, with high error correction. And it's dynamic, so the contractor can retarget the landing page based on seasonality or inventory.
Second scenario: 3–5x more scans, trackable results, and the ability to pivot without reprinting.
That's the difference between a code that technically exists and one that actually works.
FAQ: QR Code Scanning Problems
Why won't my QR code scan even though it works on my computer?
Most likely cause: size or distance mismatch. A code that works perfectly when you scan it from 6 inches away on your desk won't work when someone tries to scan from 3 feet away on a poster. Test at the actual scanning distance. If it hesitates, make the code bigger.
Second cause: contrast issue on print. Your screen shows perfect black and white, but the printer rendered it as dark gray on light gray. Print a test sample and scan it under the lighting where it'll actually be used.
Can I use a colored QR code?
Technically, yes—but only if you maintain contrast. Black code on a bright yellow background works. Dark blue on light blue does not. The safest option: black on white. If you must use color, test it first before printing thousands of copies.
What if part of my QR code gets damaged or dirty?
That's what error correction is for. A code set to H (High) can lose up to 30% of its data and still scan. A code set to L (Low) can only lose 7%. For printed materials exposed to weather, wear, or handling, always use H. Your code will be slightly larger, but it'll survive real-world conditions.
How small can a QR code be?
Minimum readable size is roughly 0.5 inches × 0.5 inches for a code scanned from within arm's reach (business cards, product labels). For anything farther, use the 1 inch per 10 inches rule: 1" code for 10" distance, 2" code for 20" distance, etc. When in doubt, go bigger. A larger code always works better than one at the minimum size.
Should I use a static or dynamic QR code?
For any printed material you care about tracking or might need to update, use dynamic. Static codes are permanent and give you no data. Dynamic codes let you edit the destination, see scan analytics, and prove ROI. At $20/year per code, it's the only option that makes business sense for anything beyond a one-time, never-changing use case.
The Bottom Line
QR code failure is predictable and preventable. It comes down to four factors:
- Size: Appropriate to scanning distance. Bigger is safer.
- Contrast: Pure black on white (or high-contrast color combinations). Test it.
- Error correction: Use H (High) for printed materials.
- Clean design: Nothing overlapping or interfering with the code.
Test before you print. Use high error correction. Make codes bigger than you think you need. And if you're doing this for business (not just one-off printing), use dynamic codes with analytics so you can prove the code actually worked.
A code that scans is a code that works. A code that sits there looking pretty, waiting for someone to try scanning it and fail, is just decoration.
Don't settle for decoration.
Create your first QR code for $20/year.
Dynamic QR code tracking for $20/year
Editable destination, unlimited scans, and practical analytics on active codes.
Create your first QR code →