Reprinting a thousand flyers because the code did not scan is an expensive way to learn this. The test below takes about ten minutes and catches essentially everything that goes wrong in practice.

Do it in this order — each step rules out a whole category, so a failure tells you where to look.

1. Scan the downloaded file, on screen (1 minute)

Open the actual PNG or SVG you downloaded and scan it off the monitor with your own phone.

If this fails, nothing else matters — the code itself is wrong. Check the content you entered, remove any logo, reset the colours, and try again. If a default code scans and yours does not, the difference is something you changed.

If it passes, the code is fine and every later failure is about printing, size, surface or light.

2. Check where it actually goes (1 minute)

A scan that succeeds can still land somewhere useless. Confirm the destination properly:

  • The link opens the page you meant, not a redirect or a holding page
  • It does not require a login
  • It works on mobile data, not only on your office Wi-Fi
  • For Wi-Fi codes, the phone actually joins the network
  • For vCard codes, every field lands in the right place
  • For SMS and email codes, the number, address, subject and body all survived

This step catches the mistakes that no amount of print testing will find.

3. Print one at final size (2 minutes)

Not scaled to fit an A4 sheet. Final size, on the real material if you can get it — the same paper stock, the same lamination, the same vinyl.

Then scan the paper, not the screen. Printing is where the margin gets thin: ink spreads, contrast drops, texture blurs the module edges.

4. Scan it from where people will stand (2 minutes)

Sit at the table if it is a table tent. Stand on the pavement if it is a window. Hold it at arm length if it is a business card.

Scanning from 10 cm proves nothing about a sign meant to be read from two metres. If it does not read from the real distance, the code needs to be bigger — see the print size guide.

5. Test in the real lighting, twice (2 minutes)

Once in daylight, once in the evening under the lights you actually use.

This is the step people skip and it is the one that catches glare. A glossy surface under a downlight becomes a mirror, and a code that worked perfectly at noon by the window is a white rectangle at seven under warm lighting.

6. Try a second phone (1 minute)

Ideally an older or budget Android, not just a recent iPhone. iPhones are forgiving; cheap Android cameras are not, and a large share of your customers are using them.

If it reads on one phone and not the other, you are sitting right on the edge of readability. That is not a pass. Make the code larger, sparser, or higher contrast until both work comfortably.

7. Check it reads at an angle and half-covered by glare (1 minute)

Tilt it. Move it under the light. Try it with a thumb over one corner — a code with sound error correction should tolerate a little.

Real people do not present a code squarely to the camera at the ideal distance. Test the way they will hold it.

What each failure tells you

Fails atLook at
Step 1, on screenThe code itself: logo too big, colours, inverted
Step 2, destinationThe link, the login wall, the SSID, the password
Step 3, on paperContrast, print quality, paper stock
Step 4, from distanceSize — it is too small
Step 5, in evening lightGlare — go matte, change the angle
Step 6, second phoneMarginal readability — size or density

Then print ten before you print a thousand

If the run is large, do a short print first and check a few from the middle of the batch. Print quality drifts, and the sheet at the end of a run is not always the sheet you approved.

Common causes and their fixes are in the seven-point checklist. If you need to start over, generate a fresh code at defaults and build back up from there.