Guide

Why Won't My QR Code Scan? 12 Common Fixes

Diagnose and fix the most common reasons QR codes fail to read, from bad contrast to print size mistakes

Few things are more frustrating than printing a thousand flyers, posters, or product labels, only to discover that the QR code doesn't scan on half the phones that try it. The good news is that scan failures almost always come down to a handful of predictable causes, and every one of them is preventable once you know what to look for. This guide walks through the 12 most common reasons QR codes fail, in roughly the order you should check them, so you can diagnose your specific problem quickly and fix it before your next print run or publish date.

1. Low contrast between the code and its background

QR scanners rely on detecting sharp contrast between dark modules and a light background, and anything that softens that boundary makes the code harder to lock onto. Light gray on white, pastel on pastel, or a busy photographic background behind the code are the most frequent offenders. Cameras in dim lighting or at odd angles need every bit of contrast they can get, so a code that scans fine on your monitor in good light can still fail in a dim restaurant or under fluorescent store lighting.

The safest combination remains a dark foreground on a light background, ideally black or a dark, saturated color on white or a very light tint. If you want to use brand colors, test the specific hex values rather than assuming any color will work, since mid-tone colors like medium blue or orange can read as insufficient contrast to a scanner even though they look fine to a human eye.

A free QR code generator that lets you preview and adjust colors before downloading, such as the tool at qrmint-h1t.pages.dev, makes it easy to try a few combinations and visually confirm the contrast holds up before you commit to a print run.

2. Printing the code too small

Every QR code has a minimum reliable scan size, and it depends on two things: the amount of data encoded and the distance the scanner will be held from the code. A short URL encoded at high error correction can be reasonably small, but a code carrying a long link with tracking parameters, or an entire vCard's worth of contact data, needs more modules and therefore more physical space to stay readable.

A widely used rule of thumb is that the code should be at least 2 x 2 centimeters (roughly 0.8 x 0.8 inches) for close-range scanning, such as on a business card, and scaled up proportionally to the expected scan distance for anything viewed from farther away, like a billboard or storefront window. A general formula is that the code's minimum width in inches should equal the scan distance in feet divided by 10, so a poster meant to be scanned from 10 feet away needs a code at least 1 foot wide.

Before finalizing any printed piece, print a physical test copy at the actual intended size and scan it with two or three different phones, not just a screen preview. A code that looks perfectly crisp on a laptop screen can still print too small or too blurry depending on the printer's resolution and paper type.

3. Insufficient quiet zone around the border

The quiet zone is the blank margin of empty space that must surround a QR code on all four sides, and scanners use it to figure out where the code starts and stops. When a QR code is cropped too tightly, placed directly against a busy background pattern, or squeezed right up against text or images, the scanner can't distinguish the code's boundary and either fails to detect it or reads it incorrectly.

The standard recommendation is a quiet zone equal to at least four modules of white space on every side, which in practice means leaving a visible margin roughly the width of a small border around the entire code when you place it into a design. It's tempting to crop this margin away to save space on a tight layout, but doing so is one of the fastest ways to break an otherwise perfectly good code.

When exporting a code from a generator, keep the built-in white background rather than making it transparent and placing it over a patterned or dark surface, unless you've specifically added a solid light-colored panel behind it to preserve the quiet zone.

4. Damage from a poorly placed logo or overlay

Adding a logo to the center of a QR code is a great way to reinforce brand recognition, but QR codes only tolerate a certain amount of obstruction before the underlying data becomes unrecoverable. Error correction built into the QR standard can recover a meaningful percentage of the code even if part of it is covered or damaged, but that headroom is used up quickly if the logo is too large, poorly centered, or placed with the wrong shape.

A safe logo generally covers no more than about 20 to 25 percent of the total code area and sits centered with a small buffer of clear space around it, rather than touching the surrounding modules directly. Round or square logos with a subtle white border tend to scan more reliably than logos with hard edges or transparent backgrounds that blend into the code.

The free plan on a tool like qrmint-h1t.pages.dev supports adding a text-based logo directly in the browser, which is a lower-risk way to add branding without introducing the scan failures that sometimes come with heavy image overlays. Always test a logo-embedded code on multiple devices before printing at scale.

5. Wrong or corrupted content type

Not every QR failure is visual. Sometimes the code scans and displays a result, but the result is wrong, broken, or unusable, which is just as bad as not scanning at all. A common cause is generating the code before finalizing the destination URL, then changing the link afterward without regenerating the code, since a static QR code's content is locked in at creation time and cannot be edited later.

Another frequent issue is malformed content for special formats such as Wi-Fi credentials or vCard contact cards, where a typo in the network name, password, or a missing required field causes the scanning app to show an error instead of the expected prompt. Always double-check special-format fields like phone numbers, email addresses, and Wi-Fi passwords for typos before generating the final code.

If you anticipate needing to change the destination after the code is printed, that's specifically what dynamic QR codes are built for, since they let you edit where the code points after it's already out in the world. That capability sits on the Pro tier, and it's worth planning for upfront if your use case involves menus, promotions, or anything likely to change.

6. Screen glare and glossy print finishes

A QR code that scans perfectly on your desk can still fail in the field simply because of how light interacts with the surface it's printed or displayed on. Glossy laminate, plastic sleeves, and high-gloss photo paper all create glare and reflections that confuse a phone camera's autofocus and exposure, especially outdoors or under bright store lighting.

Matte finishes generally scan more reliably than glossy ones for this reason, and if a glossy finish is required for other design reasons, angling the printed material slightly away from direct overhead light sources when scanning can help. This is especially relevant for laminated menus, outdoor signage, and window clings, all of which are common places QR codes end up failing in practice.

If you're displaying a code on a screen rather than printing it, similarly avoid pointing it directly at overhead lights or windows, since screen glare causes the exact same detection problem as glossy print.

7. Warping, curving, or folding the code

QR codes are designed to be read as a flat, undistorted grid, and physically warping the surface they're printed on distorts that grid in ways scanners struggle to correct for. Codes printed on curved surfaces like bottles, cups, or cylindrical packaging, or folded materials like brochures and tent cards, are especially prone to this problem if the fold or curve runs through the code itself.

Whenever possible, position the code on a flat panel of the packaging or material rather than across a seam, fold line, or tight curve. If a curved surface is unavoidable, keep the code as small a portion of the total curvature as possible and test scanning from multiple angles, since a slight curve that scans fine head-on may fail at an angle.

For folded print materials, placing the code entirely within one panel rather than spanning two panels prevents the crease from cutting through the code's data area, which is one of the more overlooked causes of print QR failures.

8. Camera and app limitations on the scanning side

Not every scan failure originates with the code itself. Older phone cameras, cracked or dirty camera lenses, and low-light conditions on the scanning device can all cause a perfectly valid code to fail to read. Some older Android devices also don't have native QR scanning built into the camera app and require a separate third-party scanner app, which can confuse users who assume their phone should handle it automatically.

If you're troubleshooting a specific complaint of a code not scanning, it's worth asking what device and app the person used, since testing the same code on a different phone often reveals the code is fine and the issue was device-specific. Cleaning the camera lens and ensuring adequate lighting solves a surprising number of real-world complaints that initially look like a code problem.

For public-facing codes, a small line of text near the code such as "Scan with your camera app" reduces confusion for users unfamiliar with QR codes and steers them away from unnecessary third-party apps.

9. Encoding too much data for the intended size

The more data a QR code encodes, the denser and more granular its module pattern becomes, and dense patterns require larger print sizes and better cameras to resolve accurately. Long URLs packed with UTM tracking parameters, entire paragraphs of text, or large vCard entries can push a code into a visually dense pattern that scans unreliably at small sizes even with perfect contrast and a clean quiet zone.

Shortening the destination URL before generating the code, or trimming unnecessary tracking parameters, reduces the data payload and produces a simpler, more scan-friendly pattern. If a shorter URL isn't an option, compensate by increasing the printed size of the code rather than trying to force a dense code into a small format.

As a general practice, it helps to generate the code from the final, complete destination content rather than a placeholder, and to visually compare the module density of a short link's code against a long link's code side by side before deciding on final print size.

10. Choosing the wrong error correction level for the use case

QR codes support four levels of built-in error correction, commonly labeled L, M, Q, and H, which trade off data capacity against the code's ability to recover from damage or obstruction. Low error correction packs in more data per given size but leaves less room for a logo, scuffing, or partial damage, while high error correction sacrifices some data capacity in exchange for much greater resilience.

For codes destined for outdoor use, product packaging that may get scuffed, or any code with a logo overlay, a higher error correction level is the safer default even though it slightly increases the pattern's density. For simple, protected use cases like a code shown only on a clean digital screen, a lower level works fine and keeps the pattern simpler.

Most generators set a sensible default automatically, but if you have manual control over this setting and are adding a logo or expect wear and tear, opting for the higher end of the error correction scale reduces the odds of a scan failure down the line.

11. Motion blur from an unsteady scan or fast approach

Some scan failures have nothing to do with the code and everything to do with how it's being scanned. Phone cameras need a brief moment to autofocus and hold steady, and users who wave their phone quickly toward a code or scan while walking often trigger blur that prevents a clean read, especially in lower light.

This is a user behavior issue more than a design issue, but it's worth accounting for in your placement decisions. Position codes at a height and location where people naturally pause, such as at a checkout counter or an entryway, rather than somewhere they'll walk past quickly, like a moving vehicle or a fast-moving line.

If you notice a pattern of failed scans in a specific location, consider whether the physical environment is encouraging rushed, unsteady scanning and whether repositioning the code to a calmer spot might resolve it without changing the code itself.

12. Never testing before publishing

The single most common root cause behind QR failures isn't any one design flaw, it's skipping the testing step entirely. A code that was never scanned with an actual phone camera before going to print or going live online can carry any combination of the eleven issues above without anyone noticing until it's already out in the field.

A simple, reliable testing routine catches nearly every failure mode before it becomes a public problem: generate the code, view it at its actual intended size (print a physical copy if it's going to print), and scan it with at least two different phones in normal lighting conditions, ideally including one older or lower-end device. Testing takes less than five minutes and prevents the far more expensive problem of a failed print run or a broken code embedded in permanent signage.

Building this test step into your standard workflow, every single time a code is created or its destination content changes, is the most effective single habit for eliminating QR scan failures for good.

Frequently asked questions

Why does my QR code scan on some phones but not others?

This usually points to a marginal issue like borderline contrast, small print size, or a busy background rather than a completely broken code. Newer phones with better cameras and more forgiving scanning software can often read a code that an older or lower-end device cannot. Test across a few different phones and improve contrast, size, or quiet zone margin to make the code more universally reliable rather than just barely scannable.

Can a QR code just stop working after it used to scan fine?

A static QR code's encoded data never changes and doesn't expire, so if it stopped scanning it's almost always due to physical wear like fading, scuffing, or fold damage to the printed copy, not the code itself going bad. If the code points to a URL and the destination page was taken down or the link changed, the code will still scan but lead somewhere broken, which can feel like the code has stopped working.

Do I need special software to test if a QR code will scan correctly?

No special software is needed; your phone's default camera app on most modern iOS and Android devices scans QR codes natively without a separate app. Simply open the camera app, point it at the printed or displayed code, and wait for the on-screen prompt. Testing with the native camera app, rather than a dedicated third-party scanner, gives the most realistic picture of what typical users will experience.

Is it better to make a QR code bigger just to be safe?

Generally yes, within reason. A larger code gives cameras more resolution to work with and more room for a clean quiet zone, which improves reliability especially for codes with dense data or a logo. There's no meaningful downside to sizing a code generously other than using more physical space in your design, so when in doubt, err on the larger side rather than the smaller one.

Create your free QR code

Related guides