How to Track QR Code Scans in 2026: UTM Links, Free Alternatives to Dynamic Codes and Paid Plan Prices (Bitly, QR Tiger, Jobbit)
How to track QR code scans for free in 2026: put a UTM link or your own short link behind a static code and count scans in Google Analytics, so the code never expires and costs nothing a month. When a paid dynamic QR plan is worth it, what Bitly, QR Tiger, Uniqode and Canva charge, how to read the numbers, and the print rules that change them.

You put a QR code on the menu, the flyer, the van and the invoice, and now the obvious question: is anyone scanning it? The QR code sites have an answer ready. Upgrade to a dynamic code, they say, and you get a dashboard of scans by day, city and device, for a subscription that starts at about £7 a month and rises with every code you add. What they do not say is that scan tracking is a five-minute job you can do for free with tools you already have, and that the "free" dynamic code they gave you will stop working the day the trial ends. QR Tiger's own 2026 trends report counts a 57% rise in scans across the countries it tracks; the codes are worth measuring, not worth renting.
This guide shows you how to track QR code scans three ways without paying for a dynamic plan: a UTM link counted in Google Analytics, your own short link that you can edit after printing, and a landing page per code. It explains what a dynamic QR code actually is, when a paid plan (Bitly, QR Tiger, Uniqode) is genuinely worth it, how to read scan numbers without fooling yourself, and the print and placement rules that change the numbers more than any software.
Want the trackable code without the setup? Open Jobbit and type "make a QR code for my menu that I can track in Google Analytics": the agent builds the UTM link, generates a static code that never expires, tests that it scans, and tells you the print size. The free QR code generator does the same from a form.
Make a trackable QR code on Jobbit in one message
The trick to free tracking is that the code itself does nothing clever. It is a static code, which encodes your link directly and cannot expire; the tracking lives in the link. So the message to the agent is:
"Make a static QR code for https://example.co.uk/menu with UTM tags so I can see scans from the table cards in Google Analytics (source qr, medium print, campaign table-cards). Give me PNG and SVG with our logo, and tell me the minimum print size."
You get back the code files, the exact link it encodes, and a note of where the scans will show up. A chat assistant such as ChatGPT, Claude, Gemini or Copilot, or a general agent like Manus or Meta's Muse, will write the UTM link for you too; the difference here is that the same message also generates the code, tests it and sizes it for print. Repeat with a different campaign name for the window poster, the van and the receipt, and each one reports separately. The free QR code guide covers the code itself in detail; this post is about the counting.
What a dynamic QR code is, and what you are paying for
A static code encodes your address directly, so nobody sits in the middle: it cannot expire and cannot be counted by the generator. A dynamic code encodes a redirect owned by the generator, which is how they count scans and let you edit the destination, and also why the code dies when the subscription does. The full explanation is in the free QR code guide; the point for tracking is that everything a dynamic code offers (counting, editing, a short link) can be reproduced with a static code pointing at a link you control. The three methods below do that in increasing order of effort.
Method 1: UTM parameters plus Google Analytics (free, 5 minutes)
A UTM tag is a set of labels added to the end of a link that tells your analytics where a visit came from. Google's free Campaign URL Builder makes them, and any agent will write them for you. The link behind the menu code becomes:
https://example.co.uk/menu?utm_source=qr&utm_medium=print&utm_campaign=table-cards
In Google Analytics 4, which is free and already on most business websites, those visits appear under Acquisition with source "qr", medium "print" and campaign "table-cards". You will see how many people scanned, when, on which device, and what they did next, which no QR dashboard can tell you. The rules:
- One campaign name per placement (table-cards, window, van, invoice, flyer-september). That is what turns one number into a comparison.
- Keep the names lowercase and consistent. "Van" and "van" are two campaigns to Analytics.
- Point at a page on your own site. UTM tags only work where your analytics runs; a code straight to Instagram or a PDF cannot be counted this way.
- Test on two phones before printing. The link is long, so the code is dense; the print-size rules later in this post matter more with UTM links.
If your site has no analytics yet, the agent can set up Google Analytics 4 on a Jobbit-hosted site in the same chat; the free website guide shows what that looks like.
Method 2: your own short link (free, editable after printing)
The one real advantage of a dynamic code is that you can change where it points after the flyers are printed. You can have that too, by putting a short redirect on your own domain in front of the destination: example.co.uk/menu forwards to wherever the menu is this month, and the code encodes the short address. Change the forward, and every printed code follows. You also get a cleaner, less dense code than a full UTM link, which scans better from a distance.
Three ways to get one:
- Your website's own redirects. Most site builders and hosts let you add a redirect from a short path to a long address in a settings page.
- A Jobbit-hosted page. Ask the agent: "Create a short link example.co.uk/menu on my site that forwards to the current menu PDF with UTM tags, and let me change it later by telling you." The forward and the counting are then both yours.
- A link shortener on your own domain. Bitly and similar services will host short links on a custom domain on paid plans, which is the honest version of a dynamic QR code: you are paying for the redirect, and the code stays yours if you move the domain.
The short link can carry the UTM tags on the far side of the redirect, so Method 1 and Method 2 combine: a short, robust code on the print, full campaign data in Analytics.
Method 3: a landing page per code
For a campaign that matters, a poster in twenty pubs or a code on 10,000 product labels, give the code its own page: example.co.uk/pub-offer. Every visit to that page is a scan, the page can carry the offer, the form and the phone number, and you can change the page without touching the code. Analytics counts the page; no UTM needed, though adding them costs nothing. On Jobbit, "build a one-page landing page for the pub poster offer with a claim form, and give me a QR code for it" produces both in one go.
When a paid dynamic QR plan is worth it
Sometimes it is. Pay for a dynamic plan if:
- You manage dozens of codes for other people and need one dashboard rather than one analytics account per client.
- You cannot put your own site behind the code, for example codes that must open an app store listing or a payment link directly, and you still need counts.
- Compliance needs an audit trail of every destination change with who made it.
- You need scan-level detail such as GPS-approximate location and time of day for outdoor advertising, which page analytics only partly replaces.
At the time of writing, QR Tiger's Regular plan is $7 a month billed annually or $9.99 monthly, Bitly Core is $10 a month billed annually with 90 days of scan history, and Uniqode's Essential plan is $108 a year; the free dynamic codes on all three are capped or expire after a trial. QR Code Monkey and Canva make static codes free with no tracking, which is fine with Method 1. The head-to-head, including design and print output, is in Bitly vs QR Code Monkey vs QR Tiger, and the longer list in the best QR code generators. If you do pay, pay for a service that lets you export your codes and use your own domain, so the codes survive if you leave.
Reading the numbers without fooling yourself
Scan counts look precise and are easy to misread.
- Compare placements, not totals. 40 scans from table cards and 3 from the window tells you something; 43 scans tells you nothing.
- Expect low rates. A well-placed code on a menu is scanned by a minority of diners; a poster in a shopping centre is scanned by a fraction of a percent of passers-by. Judge against your own placements over time, not against a benchmark from a QR vendor.
- Look at what happened next. Analytics shows whether scanners called, booked or left within five seconds. A code that gets 200 scans and no bookings is a landing page problem, not a code problem.
- Discount your own tests. Filter out your office IP or your own device in Analytics, or the first week's numbers are you.
- Give it a month. Print runs outlive campaigns; the menu code will still be scanned next year, which is one more reason to use a static code.
Placement changes the numbers more than software
Most "nobody scans it" problems are physical, not analytical. A code needs roughly one tenth of the scanning distance as its width, a clear margin around it, dark ink on a light background, and a line of text saying what happens when you scan, which in most people's experience doubles scans on its own. A long UTM link makes a denser code that has to be printed larger, which is one more reason to put a short link behind it. Test the printed proof with two phones, one of them old, before the print run; the sizes for menus, cards and posters are tabled in the free QR code guide.
Mistakes that break QR tracking
- Printing a free dynamic code and losing every scan (and the code) when the trial ends.
- Different UTM names for the same placement, which splits one campaign into three.
- Pointing the code at a site with no analytics, then buying a dynamic plan to fix it.
- Encoding a link that redirects twice, which some phones abandon.
- Never changing the destination because you did not use a short link, so last year's offer is still live on this year's flyer.
- Reading the total and ignoring the next step. Scans are not customers.
Frequently asked questions
How can I track QR code scans for free?
Point a static QR code at a link with UTM tags on your own website and read the scans in Google Analytics 4, which is free. Use one campaign name per placement so you can compare the menu, the window and the van. The code never expires because it is static; the counting happens in your analytics.
Do I need a dynamic QR code to track scans?
No. A dynamic code is a paid redirect that counts scans for you; a UTM link or a short link on your own domain does the same job for free. Pay for a dynamic plan only if you manage many codes for clients, cannot use your own site behind the code, or need scan-level detail for outdoor advertising.
Can I change where a QR code points after printing?
Only if the code points at a link you control. Put a short redirect on your own domain (for example example.co.uk/menu) behind the code and change the forward whenever you like. A static code pointing straight at a page cannot be changed, which is why the short link is worth setting up before you print.
How much do dynamic QR codes cost in 2026?
QR Tiger's Regular plan is $7 a month billed annually or $9.99 monthly, Bitly Core is $10 a month billed annually, Uniqode's Essential plan is $108 a year. Free dynamic codes on those services are capped or expire after a trial.
Does Google Analytics track QR codes?
Yes, once the link behind the code carries UTM tags or points at its own landing page. GA4 shows scans as sessions with the source, medium and campaign you set, plus what the visitor did next.
Why does my QR code get scanned so little?
Usually size, contrast or placement rather than the code: too small for the distance, printed on a dark background, no quiet zone, or nothing telling people why to scan. Test the printed proof with two phones and add a line of text above the code.
What is the easiest way to get a trackable QR code?
Ask the agent at jobbit.uk for a static code with UTM tags for each placement, or use the free QR code generator and paste in a UTM link. Both give you a code that never expires and scans you can read in your own analytics.