QR code tracking

Make a QR code that tells you whether anyone scanned it. Every scan is recorded with country, device and time before the phone opens your page.

Verify a free account to keep permanent tracked QR links and manage them.

Why a plain QR code tells you nothing

A QR code is just a picture of a URL. Generate one that encodes your page directly and the scan goes straight from the phone to your site: nothing in between ever counts it. You can print a thousand flyers and have no way of knowing whether one person scanned or none did.

Worse, the URL is baked into the printed pattern. If the destination moves, every code already printed points at a dead page, and there is nothing to do about it except reprint.

How a tracked QR code works

The code encodes a short tracking link instead of the destination. A scan opens that link, the visit is recorded, and the phone is forwarded on. The person scanning sees their browser open your page, same as always.

Because the printed pattern encodes the short link and not the destination, you can change where it points afterwards. The poster on the wall keeps working when the campaign page moves.

What a scan can and cannot tell you

Recorded: the time, the country, the device type, the browser and operating system. That is enough to answer the questions worth asking about print, which are whether anyone scanned, when, and roughly where.

Not recorded: who the person is. A scan from a phone camera usually arrives with no referrer at all, so it shows as direct traffic. If you need to tell the cafe flyer from the conference banner, that distinction has to come from using a different link for each placement, not from the analytics.

One code per placement

The single most useful habit with print is a separate tracking link, and so a separate code, for each place the code physically appears. Same destination, different short links. Then the numbers answer a real question: the conference banner pulled 40 scans, the flyers pulled 3, print more banners.

Adding utm_source to each one carries that distinction into the destination site’s analytics too, so scans do not all collapse into “direct” there.

Printing them so they actually scan