QR code tracking turns a printed square into a measurable channel. Instead of guessing whether the poster in the window did anything, you get scan counts, timing, device mix and rough location for every code you put out — and you can change where the code points long after it's been printed.
Why static QR codes can't be tracked
This is the part most guides skip, and it's the part that decides everything else. A static QR code encodes your destination directly into the black-and-white pattern. When someone scans it, their phone reads the URL out of the image and goes straight there. No server of ours is ever contacted, so there is nothing to count. Any tool promising to track a code that was generated statically is either wrong or quietly generating a different code.
A dynamic QR code encodes a short redirect link instead. The scan lands on that link first, gets logged, and is immediately forwarded to wherever you're currently pointing it. That single extra hop is what makes both tracking and editability possible — and it's why the decision between static and dynamic has to be made before you print, not after.
What QR code tracking actually shows you
- Total scans — every time the code is read, including repeat scans by the same person.
- Unique visitors — de-duplicated, so one person scanning three times doesn't look like three customers.
- Scan timing — date and time of each scan, which is how you find your genuine peak hours rather than the ones you assume.
- Device and OS — iOS versus Android, mobile versus tablet. Useful before you send everyone to an app store link.
- Approximate country — country-level, derived from the request. Not precise GPS, and never asked of the visitor.
How to track your QR code scans
- Open the generator and choose the URL type.
- Switch from Static to Dynamic. This is the step that enables tracking — it can't be added later.
- Paste your destination and create the code. You'll get a short redirect link behind the pattern.
- Download and print. The printed pattern is now permanent; the destination behind it isn't.
- Watch the scans in your account, and repoint the destination whenever the campaign changes.
One code per placement beats one code everywhere
If every flyer, sticker and packaging insert shares a single QR code, your analytics can tell you that people scanned — but not where they were standing when they did. Generate a separate dynamic code per placement, point them all at the same landing page, and the comparison becomes obvious: the window sticker outperforms the counter card, or the packaging insert quietly does nothing. That's a decision you can act on, and it costs nothing extra beyond creating a few more codes.
Tracking is useless if the destination is dead
The failure mode nobody plans for isn't low scans — it's a code that still scans perfectly onto a page that no longer exists. A campaign URL gets retired, a site migrates, a hosting plan lapses, and every printed code in the wild silently starts leading customers to a 404. Scan analytics won't warn you: the scans still register.
Broken-link monitoring closes that gap. Each dynamic code's destination is health-checked when the code is scanned (at most once every six hours) and whenever you press Check now in your account, and the result — reachable, 404, server error, unreachable — is shown against the code with the time it was last checked. On Business and Founder plans every dynamic code is also checked every six hours on a schedule, scanned or not, and an email goes out when two checks in a row fail — at most once a day per code. On Free and Pro there is no schedule, so a code nobody scans is only checked when you ask; and a single check that fails or times out is never treated as proof the page is gone.
Tracking and privacy
Scan tracking here is deliberately coarse, and here is exactly how coarse. The redirect sets no cookies and the raw IP address is never stored — but a token derived from it is, rotated daily, which is what lets us estimate repeat scans. Location comes from the network, not the phone: we store the country, region and city Cloudflare reports for the connection, plus that city's approximate coordinates, which is what draws the scan map. That is a neighbourhood-level guess about a network, not GPS and not a pin on the person. Scan rows are therefore pseudonymous rather than anonymous. If you're running codes in the EU, treat them that way in your own privacy policy and mention scan analytics in it.
Frequently asked questions
Can you track a QR code?
Only if it's a dynamic QR code. A static QR code encodes your destination directly in the pattern, so a scan goes straight from the phone to your link and never touches any server that could count it. A dynamic QR code encodes a short redirect link instead, so every scan passes through a server that records it before forwarding the visitor — that redirect hop is the only thing that makes tracking possible.
Can I turn an existing static QR code into a trackable one?
No. The destination is baked into the pattern itself, so making it trackable means generating a new code and reprinting. This is the single best reason to start with a dynamic code on anything you're about to print in volume.
What data does QR code tracking collect?
Scan count, timestamp, device type, operating system, browser, language, referrer, network operator, and the location the network resolves to — country, region, city and that city's approximate coordinates. Instead of "unique visitors" we report scanner-days: a daily token derived from the IP address, so one person scanning on two days counts twice and everyone behind one network address counts once. It is an estimate of activity, not a count of people. We never collect names, emails, phone numbers or GPS location, we never store the raw IP address, and visitors aren't asked to install anything.
Does tracking slow down the scan?
Barely. The redirect is served from an edge network close to the scanner, and both database writes are deferred until after the response has been handed to the browser. Two small things do happen first: the user-agent string is parsed and the daily token is hashed — microseconds of local work, no network calls, no lookups.
Can I change where a tracked QR code points after printing?
Yes — that's the other half of what dynamic codes buy you. You can repoint the destination at any time and the printed code keeps working, which means a typo, an expired campaign, or a whole site migration no longer forces a reprint.
What happens if the page behind my QR code goes down?
The destination is re-checked whenever the code is scanned — at most once every six hours — and whenever you press Check now in your account, and the result is shown against the code with its last-checked time. On Business and Founder plans every dynamic code is also checked every six hours on a schedule, so a printed code nobody has scanned yet is still watched, and a 404, a server error or an unreachable host triggers an email once two checks in a row have failed, at most once a day per code. On Free and Pro, a code nobody has scanned is only checked when you press Check now.
Is QR code tracking GDPR-compliant?
It can be, and ours is built to make that straightforward: no cookies are set on the redirect and the raw IP address is never stored. It is not, however, anonymous data — a daily token derived from the IP address and a network-level city are stored, which makes scan rows pseudonymous personal data. Mention scan analytics in your own privacy policy, name the pseudonymous token and the coarse location, and you are describing what we actually keep.
How many scans can I track?
Scan logging isn't capped by volume — a code that gets scanned ten thousand times records ten thousand scans. Plan limits apply to how many dynamic codes you can have active at once, not to how heavily each one is scanned.
Can two different QR codes point to the same page?
Yes, and it's one of the most useful things you can do. Give each placement its own dynamic code — table tent, window sticker, flyer, packaging insert — all pointing at the same landing page, and the scan counts tell you which placement is actually earning its space.
Do I need an account to track scans?
Yes. Static QR codes are free and need no sign-up, but tracking requires a dynamic code tied to an account so the scan history has somewhere to live and only you can see it.