QR Code Not Scanning? Causes and How to Fix Them

Why a QR code won’t scan and how to fix it: low contrast, inverted colors, small size, no quiet zone, glare, damaged print, dense static codes, broken links, a changed URI, a paused code or a password page.

A QR code that won’t scan is almost always fixable. First figure out which of two situations you’re in: the phone camera doesn’t react to the code at all, or the code opens but shows the wrong thing (an error, an old page, a pause message). Below are the common causes for each case and how to fix them in WebQR.

The camera doesn’t detect the code

Low contrast, inverted colors or a light gradient

Scanners look for a clear difference between dark dots and a light background. In the QR design step, the preview helps: under the code it shows Ready to scan when the code is easy to read.

QR design step: black dots on white background, the preview shows Ready to scan

If the colors are too close — for example, light grey dots on white — the indicator switches to May not scan.

Light grey dots on white: the preview shows May not scan

The same warning appears for inverted colors: light dots on a dark background. Some scanners read such codes, many don’t.

Light dots on a dark background in the QR design step, the preview shows May not scan

A Gradient that fades into a light color also lowers contrast in part of the code.

Gradient toggle on with a gradient fading to light grey, the preview shows May not scan

Fix: in the Shape style section, set a light Background color and clearly darker Dots Color, turn the gradient off or keep both of its colors dark, and wait a couple of seconds for the preview to refresh. You can keep your brand colors — just keep the dots much darker than the background. More in How to print QR codes and QR code with a logo.

Shape style section in WebQR with dot style icons, Background color, Dots Color, Transparent Background and Gradient toggles

The code is too small or blurry

A small code, or a low-resolution image stretched to a large size, turns into a blurry spot. A general rule of thumb: the code should be about one tenth of the scanning distance (about 10 cm for 1 m) and at least 2 × 2 cm on anything held in the hand.

Fix: download the code in a larger size. For PNG and JPG, pick 2K (2048px) Large or 4K (4096px) Extra large in the Size row.

PNG selected with 2K (2048px) Large highlighted in the Size row

For print, a vector format is even better: SVG, PDF or EPS stay sharp at any size. See QR code download formats.

Download QR Code dialog with File format list: PNG, JPG, SVG selected, PDF, EPS

No empty margin around the code

A QR code needs an empty margin around it — the “quiet zone”. When text, a photo, a frame edge or the trim line touches the code, scanners can’t find its borders. As a general recommendation, leave at least four small modules of free space on each side and put the code on a plain light area.

Glare, curves and folds

Glossy paper and laminate reflect lamps; a code on a bottle or a cup wraps around the curve; a code on a fold breaks in two. Fix: use matte material, put the code on a flat part, make it smaller relative to the curve, and keep it away from folds and seams. For labels and boxes, see QR codes on packaging and labels.

Damaged or worn print

Scratches, stains, faded ink or a sticker peeling off can make a code unreadable. Fix: reprint the code. If it was dynamic, the new copy uses the same short link, so all the settings and statistics stay with it.

Too much data in a static code

A static code stores all the content in the pattern itself. A long URL, a long text or a full contact card makes the pattern dense, with tiny modules that are hard to read when printed small.

Static QR Codes section in WebQR with URL, Text, Wi-Fi, vCard, Phone, WhatsApp, SMS, Email, Geolocation and Event types

Fix: use a dynamic code instead. It holds only a short link, so the pattern stays simple, and the content lives on the page. The difference is explained in Static vs dynamic QR codes.

The code scans but opens the wrong thing

The destination is broken or out of date

The page the code points to was moved, deleted, or the promotion has ended. With a static code, the only way out is a new code. With a dynamic code, open Edit and put the new address in the Website field (or update the content) — the printed code will open the new destination.

Editing information page in WebQR with the Website field containing a new URL, the updated preview and the Information, Settings and QR design tabs

How it works: Edit a QR code after printing.

The short link (URI) was changed

Every dynamic code has a short link with a Domain and a URI. The printed image encodes exactly this link. If someone changed the URI after printing, the old codes stop working — WebQR warns about this right next to the field.

URI field with the short link of a QR code in WebQR and the warning that changing the URI breaks old links

Fix: set the URI back to the value that was printed. Change the destination in Website, never the URI.

The code is paused

A dynamic code can be paused, for example between campaigns. The pause icon is in the header of the code’s analytics page, with the tooltip Pause; when the code is paused, the tooltip reads Resume.

Dynamic QR code card on the analytics page in WebQR with the pause icon and the menu including Reset statistics

In My QR codes, a paused code is easy to miss: the only sign is the red status dot next to its name (an active code has a green dot).

Paused dynamic QR code card in My QR codes with a red status dot next to the name

Anyone who scans a paused code sees the message “Page temporarily paused — The QR code owner has temporarily paused this page. Please try again later.”

Public page of a paused QR code: Page temporarily paused

Fix: open the code’s analytics page, click the icon with the tooltip Resume and confirm. The code works again right away.

The page asks for a password

If Page password is turned on in the code settings, scanning opens the Protected page screen with a password field. This is not an error: the code works as intended. Give the password to the people who need it, or turn protection off. More in Password-protected QR codes.

Public Protected page prompt on a phone with an Enter password field and a Show button

A custom domain stopped working

If the code uses your own domain and its DNS records were changed or removed, the short link may not open. Check the domain settings: Custom domain for QR codes.

Problems on the phone side

Sometimes the code is fine and the problem is the phone:

  • clean the camera lens and add light;
  • hold the phone steady, move a little closer or farther;
  • check that QR code detection is turned on in the camera settings, or try another scanner app;
  • dynamic codes open a web page, so the phone needs an internet connection.

Checklist before printing

  • The preview shows Ready to scan.
  • Dark dots on a light background, no light gradient.
  • The size fits the scanning distance; the file is SVG, PDF, EPS or a large PNG.
  • Empty margin around the code; no text or trim line touching it.
  • Matte, flat placement without folds.
  • A dynamic code for anything that may change; the URI is final.
  • Tested on several phones, at the real size and distance, on the final material.

FAQ

Do QR codes expire? A static code doesn’t expire by itself — it works as long as its content (for example, the website) is available. A dynamic code works as long as it is active and not paused.

Can I fix a code that is already printed? If it’s dynamic — yes: change the destination, resume a paused code or restore the URI. A static code can’t be changed; you’ll need a new one.

How do I find out whether people are scanning it? For dynamic codes, scans are counted on the code’s analytics page — see QR code analytics.