How to Track QR Code Scans for Free
Most free QR generators will happily give you a code. Far fewer will tell you whether anyone scanned it, and the ones that do often count scans for a trial period and then stop. Before choosing a tool, it helps to understand where a scan count actually comes from, because that explains what is free to measure, what is not, and which numbers you should never expect from any tool at all.
Why a static QR code cannot be tracked
A QR code is a picture of some text. When a phone reads a static code, it decodes the text, finds an address such as https://example.com/autumn-offer, and opens it. That is the whole event. The generator that drew the code is not involved, and nothing is reported to anyone.
So when a tool offers to track a static code, it cannot. There is no moment at which a scan could be counted, because the phone never touches a server that belongs to the generator or to you, until it reaches the destination itself.
There is one partial exception worth knowing. If the static code points at your own website, your web analytics will record the visit, and if you added UTM tags to the address inside the code, it will even label the visit as coming from print. What it records is a page view, though, not a scan: it misses visitors who decline analytics cookies, use a blocker, or leave before the page finishes loading. Useful, but not a scan count.
How a tracked scan works
To count scans, the code has to point at an address you control that sits in front of the destination. In practice that is a short link:
- The code encodes a short address, for example
sharecut.site/abc123, not the final page. - The phone requests that address. The server receiving the request records the event.
- The server answers with an HTTP redirect, and the phone continues to the real destination.
Because the count happens at step 2, before the destination loads, it does not depend on cookies, consent banners or the destination page working. That is why a scan count and the visits in your analytics will never match exactly, and why the scan count is usually the higher of the two.
This is also what people mean by a dynamic QR code. It is not a different kind of ink, just a code whose printed address is a pointer you own. The same arrangement that makes scans countable is the one that, on some setups, lets you change the destination later.
What you can learn from a scan
The request a phone makes carries a little technical context, and that is the entire source of scan analytics. From it a tracker can show:
- The total, and how it changes day by day.
- Country, derived from the network the phone used.
- Device type, operating system and browser, from the user agent the phone sends.
- Referrer, which for printed codes is usually empty. Camera apps do not send one, so a scan normally shows up as direct. If a link records lots of referrers, it is being clicked online as well as scanned.
- When the last scan happened, which is how you notice a poster that was taken down.
What no scan tracker can tell you
This list matters more than the previous one, because inflated expectations are how people end up distrusting numbers that are actually fine.
- Who scanned. No name, email or phone number. A scan is an anonymous request.
- People versus scans. The same person scanning twice is two scans. Treat totals as scans, not customers.
- Whether they bought anything. The tracker sees the scan, not what happened on the destination. For that you need your site's analytics, see the UTM section below.
- App installs. If the code goes to an app store, the store owns everything after the redirect.
- Scans that were never opened. Phones show a preview of the address first. If someone reads it and does not tap, no request was made and nothing was counted.
One code per placement, or the number answers nothing
A single code on the flyer, the window and the packaging gives you one total and no way to tell which placement produced it. The fix costs nothing: create a separate short link and code for each placement, all pointing at the same destination. Now the window sticker and the flyer drop each have their own count.
Name them so you can read the list in six months: window-main-st, flyer-oct-drop, packaging-jar-label. Keep the exported file next to the name, so a reprint uses the same code and the history continues instead of starting from zero. Our page on QR code scan tracking for small businesses covers how to read the resulting numbers when volumes are small.
Add UTM tags so GA4 sees the visit
The scan count tells you the code was used. To see what those visitors did next on your site, the visit has to arrive in Google Analytics labelled with where it came from. Otherwise it lands as direct traffic and blends into everything else.
UTM parameters do that. A workable convention for print: utm_source=print, utm_medium=flyer (or window, packaging), utm_campaign=autumn-2026, and utm_content for the placement name. On ShareCut you do not have to bake these into the destination: a short link has a UTM tracking switch in the Link Studio, and the tags are appended on the redirect, so the printed code stays short and the base destination never changes. The full walkthrough is in how to track campaigns with UTM parameters and short links.
Expect the two systems to disagree. GA4 will report fewer sessions than the scan count, for the consent and loading reasons above. The gap is normal; a sudden change in the gap is worth a look.
Bots and link previews are counted apart
If the same short link is also pasted into WhatsApp, Slack, LinkedIn or a similar app, those apps fetch it to build the preview card, and search crawlers request links too. None of those are people. ShareCut detects these requests and shows them as a separate figure, previews and bots, instead of adding them to your clicks, so a link shared in a busy group chat does not look like a successful poster.
It is still cleaner to use a separate link for chat sharing and for print. Then the print link's count is print, and nothing else.
What is free on ShareCut, and what is not
Stated plainly, so you can decide whether the free tier is enough for your test:
- The QR generator has a dynamic mode that points the code at a ShareCut short link, so scans are counted. It works without signing in; to see the statistics you create a free account and claim the link. Downloads are PNG, SVG and PDF.
- Free: the total count is always visible, along with the daily chart. The breakdowns by country, device, operating system, browser and referrer show their top row; the rest of each list is unlocked on paid plans. Public pages of free links can show ads.
- Pro and above (from 9 EUR a month, 14-day free trial): the full breakdowns, an editable QR with logo and frames, and no ads. The link tracking and click analytics page shows the same data for links that are clicked rather than scanned.
- Not offered on any plan: identifying who scanned, conversion tracking inside your shop, or counting a static code. If a code encodes your final address directly, no tool can count it after the fact.
A ten-minute setup
- List the placements you want to compare.
- Create one short link per placement, all pointing at the same destination, and switch on UTM tags with the placement as
utm_content. - Generate each QR code in dynamic mode and export it as SVG or PDF for print.
- Scan each printed proof once to confirm it opens the right page, and remember those test scans when you read the first totals.
- Check the counts weekly, and compare them with the matching sessions in GA4.
Want to see your first numbers this week? Make a tracked code in dynamic mode with the free QR generator, give each placement its own link, and open the statistics after the first weekend. If the top row of each breakdown is not enough, the full breakdowns are on the paid plans, each with a 14-day free trial.