native codeLas Vegas, NV · available for work

QR code not working: how to find which part failed

Short answer

Check whether other QR codes scan on the same phone first. If none of them do, the problem is the phone and not your code. If only yours fails, the fault is either the printed pattern or the destination it points at. The pattern can’t be changed after printing. The destination usually can.

The frustrating part is that all three failures look identical. You hold up a phone, nothing happens, and nothing tells you which of them you’re dealing with.

Two minutes of checking saves an afternoon, because two of the three aren’t yours to fix.

First, rule out the phone

Scan a different QR code. Any one will do, on a parcel, a menu, a bus stop.

If that one fails too, stop looking at your code. The camera app, the lens, or the lighting is the problem, and nothing you do to the printed code will help.

Common causes on that side:

  • A dirty or cracked lens
  • A camera app with scanning switched off
  • Screen brightness too low to light the code
  • The phone held closer than it can focus

Back up to about the width of your hand and try again.

If other codes scan and yours doesn’t, it’s your code, and you’re down to two possibilities.

If the camera never reacts

No flicker, no banner, nothing. The phone isn’t seeing a code at all, which means the pattern itself is unreadable.

Four things cause almost all of it:

  • Too small for the distance. A sign read from across a room needs a much bigger code than a business card does. There’s a rule of thumb for how big to print a QR code.
  • Not enough contrast. Dark code on a light background. Light on dark, or two mid-tones, and the camera can’t find the edges.
  • A logo taking too much of it. A code survives some damage by design, but there is a limit to how much of it a logo can cover.
  • No quiet zone. A code needs clear space around it. Printed tight against a border or another element, the camera can’t tell where it ends.

Then the physical ones, which people forget:

  • Gloss that throws the flash straight back
  • A curved bottle or cup
  • A fold through the middle
  • Ink that bled on cheap stock

There’s a harder one too. A very long web address makes a denser pattern, which means smaller squares at the same printed size. That’s covered in static versus dynamic codes, and it’s the reason a tracking link with campaign tags on the end can print badly.

None of this is fixable after printing. The address is inside the squares. If the pattern is wrong, the paper is wrong, and the only repair is a reprint.

If it scans and goes nowhere

This is the one people misdiagnose, because the code is working perfectly.

The phone reads it, shows a link, opens it, and lands on an error. Or on the wrong page. Or on a page that used to be right.

Work through it in this order:

  1. Read the link the phone shows you before you tap it. That tells you what’s actually encoded, which is often not what you thought.
  2. Open that address in a browser by hand. If it fails there too, the code did its job and the page is the problem.
  3. Check whether the page moved. A product retired, a site rebuilt, a campaign page taken down. The code still points where it always did.
  4. Check who owns the short link. If it goes through a shortener, the code depends on that company answering. If they’ve shut down or you stopped paying, every printed code goes with them.

Good news here. If the code is a dynamic one, the squares hold a short link and the destination lives in an account. You change it there and every printed copy starts working again.

If it’s a plain code, the address is in the pattern and you’re back to a reprint. The one exception is if you still control the old address and can put a redirect on it.

What you can actually fix

Worth being blunt about this, because it decides what you do next.

What failed Fixable after printing
The phone Not yours to fix
The printed pattern No. Reprint
The destination, on a plain code Only if you control the old address
The destination, on a dynamic code Yes, in seconds

Two of the four are closed. That’s why the two minutes at the start matter: they tell you whether you’re troubleshooting or ordering new stock.

Where ours fits

QRFLOW.codes makes both kinds. Plain codes are free and need no account, which is right for anything whose destination will never move.

Saved codes on a paid plan are the changeable kind. When the page moves, you repoint it and the printing stays where it is. They can run on your own domain too, which is the thing that stops a provider shutting down from taking your print run with it.

Neither kind rescues a pattern that was printed too small. Check the size and the contrast before the print run, not after.

Where to start

Got a question this did not answer?

Send it over. We read every message ourselves, and the ones that keep coming up get written into their own answer.

Send us a question