You have printed a QR code on a flyer, a menu or a product box, and now you want to know whether anyone is using it. QR code tracking sounds like something built into the code, but it is not. A QR code is just a printed pattern that stores some text, usually a link. It cannot count anything by itself. Tracking only happens when that link leads somewhere that can measure the visit.
This guide explains how QR tracking really works, the two main ways to do it, and a simple setup that gives you useful numbers with a free static code.
The short answer
| Method | How it counts | Cost | Works after printing? |
|---|---|---|---|
| Dynamic QR service | The service's short link logs each scan before redirecting | Usually a subscription | Only while the service and your plan stay active |
| Static code + UTM tags | Your website analytics records visits that carry the tags | Free | Yes, as long as your page exists |
| Static code + your own redirect | A short path on your site redirects to a tagged URL | Free, if you run a website | Yes, and you can change the destination later |
| Separate code per placement | Each code has its own tags or path, so you can compare | Free | Yes |
QR Studio makes static codes, generated in your browser and downloaded as PNG files. They do not track scans on their own, but they work perfectly with the free methods below.
How dynamic QR tracking works
A dynamic QR code does not store your real link. It stores a short link that belongs to the QR service. When someone scans it:
- Their phone opens the service's short link.
- The service's server records the request, typically the time and basic technical details such as the device type and an approximate location derived from the connection.
- The server redirects the person to your real destination.
That middle step is what produces the scan counts and charts in a dynamic QR dashboard. It is convenient, but the code now depends on that company. If the subscription lapses or the service shuts down, the printed codes can stop working. Our guide to static vs dynamic QR codes covers those trade-offs in detail.
Scans vs visits: an important difference
Even dynamic tracking measures requests to a link, not people looking at your code. Keep these limits in mind:
- A visit is only counted if the link is opened. Someone who scans, sees the preview and decides not to tap is usually not counted.
- One person can count more than once if they scan twice or reload the page.
- Some visits are hidden from website analytics by browser privacy settings, ad blockers or cookie choices, so analytics numbers are often an undercount.
- You cannot see who scanned. Tracking tells you about visits and devices, not names.
For most purposes, that is fine. You are usually asking "is this flyer working better than that one?", and visit counts answer that well.
Make a free QR code for a link, WiFi or contact card — generated in your browser.
Open the free QR code generator →Tracking a free static code with UTM tags
If your QR code points to a website you control and that site has an analytics tool, you can track QR traffic for free by adding UTM parameters to the link. UTM tags are labels added to the end of a URL that most analytics tools recognize.
A tagged link might look like this:
https://example.com/menu?utm_source=table-card&utm_medium=qr&utm_campaign=fall-menu
- utm_source says where the code was placed, for example
table-card,flyerorwindow. - utm_medium marks the channel, for example
qr. - utm_campaign groups everything for one promotion.
When someone scans the code and opens the page, your analytics report shows that visit with those labels, separate from people who found you through search or social media.
Keep the code simple with your own redirect
Long tagged URLs make the QR pattern denser, which means smaller modules and a code that is harder to scan when printed small. A cleaner approach, if your website or hosting lets you create redirects:
- Create a short path on your own domain, such as
example.com/qr-menu. - Redirect that path to the full tagged URL.
- Put only the short path in the QR code.
Now the printed code stays simple, your analytics still receive the UTM tags, and you can change where /qr-menu points later without reprinting. You get many of the benefits of a dynamic code without depending on a QR company. Our guide on making a QR code for a website walks through this setup.
Compare placements with separate codes
The most useful QR tracking question is usually comparative: which placement, design or message works best? To answer it, create one code per placement, each with its own tag or short path:
| Placement | Link inside the code |
|---|---|
| Front window poster | example.com/qr-window |
| Table cards | example.com/qr-table |
| Takeout bags | example.com/qr-bag |
After a few weeks, compare the visits for each path in your analytics. Label your printed files clearly so the codes do not get mixed up at the print shop, and scan every code before you print to confirm it opens the right path. For event signage, see how to make a QR code for an event.