Most QR generators hand you an image and call it done. That image will scan fine, but unless the link behind it was built for tracking before you generated the code, nothing will ever tell you how many people tapped it, when, or from where. The tracking has to be designed in at the source, not added after the fact.
Why a lot of "free QR code generators" do not actually track anything
Type "free QR code generator" into a search bar and you will find dozens of tools that convert any text into a scannable pattern in one click. Most of them do exactly that and nothing more. You paste a URL, they hand you a PNG, and the moment someone scans it, the pattern decodes to that URL locally on the phone. No server sees the scan happen. No count increments anywhere. The tool did its job, it just was never built to log anything.
A QR code with analytics behind it works differently. It encodes a link that passes through a server first, either a redirect service or a page you host, and that server records the hit before sending the visitor onward. That one choice, redirect versus direct encode, decides whether the code can be measured at all.
What you need before you generate anything
Two things have to exist before the code itself matters: a destination with analytics wired up, and a plan for telling one placement's scans apart from another's. Skip either one and you will get a scan count with no way to act on it.
A trackable destination is either a dynamic QR redirect service, or a page you already control that logs visits, such as a link-in-bio profile. If you have not decided between those two approaches yet, the difference between dynamic and static QR codes is worth five minutes before you commit to one.
| Approach | Tracks scans | Campaign-level breakdown | Edit destination after printing | Cost to start |
|---|---|---|---|---|
| Bare URL pasted into a generic QR generator | No | No | No, must reprint | Free |
| Dedicated dynamic QR platform | Yes | Only if you tag the URL yourself | Yes | Free to paid, scan limits vary |
| Link-in-bio page with a built-in QR code | Yes, as a page visit | Yes, per UTM-tagged link | Yes, edit the page | Free tier available |
| QR tool bundled into a POS or card-printing app | Sometimes | Rarely | Depends on the vendor | Usually bundled into a paid plan |
How to make a QR code that tracks scans, step by step
Choose a destination that already has analytics
Decide where the code will send people before you touch a generator. It needs to be a URL sitting behind something that logs hits, a link-in-bio page, a dynamic QR redirect, or a tracked short link. A plain website homepage with no tracking layer will not tell you anything about the scan itself, only whatever your general site analytics happen to catch.
Tag the destination with a UTM parameter
This is the step almost everyone skips, and it is the one that turns a scan count into something you can actually use. Before generating the code, add a distinct utm_source and utm_medium to the destination URL using the UTM builder, so a scan from the storefront window reports separately from a scan on a flyer or a business card. See what UTM parameters are if you have not tagged a link before. Without this, every version of the code you print funnels into one undifferentiated total, and you lose the ability to say which placement earned its spot.
Generate the QR code from the tagged link, not the bare one
Once the link is tagged, generate the QR image from that full tagged URL. If you generate the code first and add tags afterward, you have to regenerate and reprint, so do this step last in the setup, first in the actual creation. A link-in-bio tool that produces the QR code straight from the profile's own URL saves a step here, since the tracking is already attached to the page rather than bolted on through a separate redirect.
Pick a format built for how you will use it
Download a vector file, SVG or EPS, for anything that will be printed larger than a business card, and a high-resolution PNG for screens or small print. A raster image scaled up from a small export pixelates and can fail to scan at larger sizes. If the code is heading to print, the sizing and resolution rules matter more than most people expect, covered in full in QR code best practices for print.
Test the code yourself before it goes live
Scan it with your own phone camera, not a QR scanning app, since that is what most real visitors will use. Confirm it opens the tagged link and that the tag shows up correctly once it lands. This is also the moment to catch a typo in the UTM string, which is far cheaper to fix now than after a print run.
Watch scans in your click analytics, not a separate QR dashboard
Once the code is live, the data appears wherever the destination's own analytics live. There is no independent "QR analytics" panel to check if the destination is a tracked link or a link-in-bio page, the scan is just a click that happened to arrive via camera instead of a tap.
Check performance by source, not just by total
The number that matters is not the overall scan count, it is the count broken down by the UTM tag you set in step two. That is what tells you the flyer outperformed the poster, or that nobody has scanned the code on the back of the receipt in three weeks. A single lump-sum total cannot answer either question.
The gap between "trackable" and "free" that most guides skip
A lot of tools marketed as a free trackable QR code will show you a scan counter and stop there. That counter tells you a number went up, and not much else. It usually will not tell you which of your five placements produced which scans, because that requires campaign tagging, which most free QR-only tools do not build in. The generator handled the code. It never touched the link's source data.
This is where a link-in-bio page earns its keep over a code-only tool. Raydar generates a QR code straight from a profile's own URL, and because that profile already carries UTM capture, referrer data, and first-touch and last-touch attribution, tagging each printed placement with its own source turns a bare scan count into something you can actually compare across campaigns, at no cost on the free plan.
What scan tracking will not tell you, even set up correctly
Be realistic about the ceiling here. A well-built trackable QR code gives you a timestamp, a device type, a browser, and country and city level location in most cases. It will not give you a name, an email address, or proof of exactly who held the phone, and no vendor claiming otherwise from a scan alone is being straight with you. If you need identity, that has to come from something on the landing page itself, a form or a login, not from the QR layer. And once someone leaves your page for a third-party site, whatever they do there is invisible to your QR or link tracking entirely. That is a different category of tracking than a single tracked link can ever provide.
Common mistakes that quietly break tracking
- Generating the code before adding UTM tags, then reprinting everything once someone asks which placement is working.
- Reusing one tagged link across several unrelated placements, which merges scans that should have stayed separate.
- Assuming a "dynamic" QR code automatically means campaign-level tracking. Dynamic only means the redirect is editable, not that it reports by source unless you tagged the destination yourself.
- Checking a QR-only dashboard for scan data when the destination is actually a link-in-bio page, and missing where the real numbers live.
- Downloading a low-resolution export meant for a screen, then printing it three times larger than its native size.