How to Track QR Code Scans
Knowing how many people scan your QR code — and where and when — is critical for measuring campaign ROI. Here's how to do it for free and what paid options offer.
Can You Track a Static QR Code?
The short answer: not by default, but yes with UTM parameters.
A static QR code encodes a URL directly into its pattern. When someone scans it, their phone simply opens that URL. The QR code itself generates no data — there's no server involved, no ping recorded, no counter incremented. The QR code is just a fancy way to open a link.
However, if the URL you encode contains UTM tracking parameters, then Google Analytics (or any analytics platform) will record every visit with full attribution. You get scan count, geographic data, device types, and time-of-day data — all for free, using tools you probably already have.
According to Bitly, businesses that track QR code scans with UTM parameters see 3x better ROI on print campaigns versus untracked QR codes — a compelling reason to invest the two minutes it takes to tag your URL. This is the method used by most professional marketers for static QR code campaigns. See also: dynamic vs static QR codes for context on the difference.
UTM Parameters Explained
UTM parameters are small pieces of text appended to a URL that tell Google Analytics where a visitor came from. They look like this:
https://yoursite.com/landing-page?utm_source=flyer&utm_medium=print&utm_campaign=spring2025UTM parameters were standardized by Urchin Software (later acquired by Google) and remain the most widely used campaign tracking method globally. Google Analytics 4 is now used by over 28 million websites worldwide (W3Techs, 2024), meaning most analytics practitioners are already equipped to interpret this data. The five standard UTM parameters are:
- utm_source
- Where the traffic came from. For QR codes, use the physical location or material:
flyer,menu,poster,business-card - utm_medium
- The marketing channel. For printed QR codes:
print. For digital screens:display - utm_campaign
- The campaign name. Something memorable and dateable:
summer-launch-2025,store-opening - utm_content
- Optional: differentiates variants. Useful if you have multiple QR codes in the same campaign:
table-topvswindow-sticker - utm_term
- Optional: keyword-level tracking. Rarely used for QR codes — leave this blank unless you have a specific need
Step-by-Step: Track QR Codes Free with Google Analytics
-
Make sure Google Analytics is on your website
You need GA4 (Google Analytics 4) installed on the destination website. If you don't control the destination site, you can't use this method — consider a URL shortener instead (see below).
-
Build your UTM-tagged URL
Use Google's free Campaign URL Builder at ga-dev-tools.google, or construct the URL manually. Example:
https://yoursite.com/?utm_source=restaurant-menu&utm_medium=print&utm_campaign=q1-2025 -
Generate your QR code from the tagged URL
Paste the full UTM-tagged URL (including the
?utm_source=...part) into QRMake's generator. The QR code will encode the entire URL, including the tracking parameters. -
Deploy and wait for scans
Print and place your QR code. Data appears in Google Analytics within a few hours of the first scan.
-
View results in Google Analytics
In GA4, go to Reports → Acquisition → Traffic Acquisition. Filter by Session source/medium to see your campaign. Or use Explore → Free Form to build a custom report filtered by campaign name.
Create a different UTM-tagged URL for each physical location. Same destination, different utm_source value for each branch, store, or placement spot. You'll see exactly which location drives the most scans without any paid tools.
What Data Can You Actually See?
With UTM tracking via Google Analytics, each QR scan appears as a web session with the following data:
Scan count
Total sessions attributed to your campaign. One session = one scan (assuming the user lands on your page).
Geographic location
Country, region, and city of the scanner, based on IP geolocation. Useful for multi-location campaigns.
Device type
Mobile vs tablet vs desktop, operating system (iOS/Android), and browser. Most QR scans are mobile.
Time and date
When scans occurred, by hour, day, and week. Reveals peak engagement times for your campaign placements.
Behaviour on site
What users did after scanning: pages visited, time on site, conversions, purchases — everything GA4 normally tracks.
Campaign attribution
Which campaign, source, and medium drove the session. Filter and compare across all your QR campaigns.
Tracking with a URL Shortener (Alternative Free Method)
If you don't control the destination website (e.g., a Google Form, a YouTube video, or someone else's booking page), you can't add UTM parameters to their analytics. Instead, use a URL shortener that provides click analytics:
- Bitly — free plan gives basic click counts, country data, and referrers. Create a short link pointing to the destination, then generate a QR code from the short link.
- Dub.co — open-source alternative with generous free tier
- Your own domain redirect — the most robust option: set up a redirect at a URL you control (e.g.,
yoursite.com/menu) and track clicks server-side
Be aware: URL shortener links depend on the shortener service remaining live. If Bitly changes its free tier or shuts down, your QR codes stop working.
Dynamic QR Codes: Paid Tracking Built In
Dynamic QR code services (like QR Tiger, Beaconstac, or Flowcode) provide scan tracking as a core feature. The QR code points to a redirect URL managed by the service, which counts every scan and records metadata before redirecting to your destination.
What dynamic services typically track:
- Total scan count per QR code
- Scanner's country and city (via IP)
- Device type and OS
- Scan date and time
- Unique vs repeat scans (on some plans)
The trade-off: most charge $5–$30/month, your QR codes depend on their server staying live, and you're trusting them with your audience's behavioural data. For a full comparison, see our guide on dynamic vs static QR codes.
Static vs Dynamic Tracking Comparison
| Feature | Static + UTM (Free) | Dynamic QR (Paid) |
|---|---|---|
| Cost | Free | $5–$30/month |
| Scan count | Yes (via GA4) | Yes (native) |
| Geographic data | Yes (via GA4) | Yes (native) |
| Device data | Yes (via GA4) | Yes (native) |
| Change URL after printing | No | Yes |
| Works if service shuts down | Yes (static URL) | No |
| Requires destination control | Yes (for GA4) | No |
| Privacy | Data stays in your GA4 | Data held by vendor |
Create a Trackable QR Code
Generate a QR code from your UTM-tagged URL — free, no account needed, download as PNG or SVG.
Frequently Asked Questions
Can you track who scans a QR code?
You can track when, where (by city/country), and on what device a QR code is scanned, but you cannot identify the specific individual. The most common free method is to add UTM parameters to your destination URL before generating the QR code — Google Analytics then records every scan as a session with full attribution data including location, device, and time.
What is a UTM parameter and how do I add one to a QR code?
UTM parameters are small text snippets appended to a URL that tell Google Analytics where a visitor came from. To use them for QR tracking: build your URL with UTM tags (e.g., yoursite.com?utm_source=flyer&utm_medium=print&utm_campaign=spring2025), then paste that full tagged URL into QRMake and generate your QR code. Every scan will appear in Google Analytics under Traffic Acquisition with your campaign attribution.
What is the difference between static and dynamic QR code tracking?
Static QR codes encode the destination URL directly — tracking requires UTM parameters in the URL and Google Analytics on the destination site. Dynamic QR codes use a redirect service that counts every scan server-side before redirecting, so tracking is built in and doesn't require destination site access. Dynamic services typically cost $5–$30/month; static + UTM tracking is completely free but requires you to control the destination site.
What data can I see from QR code scans in Google Analytics?
With UTM-tagged QR codes and Google Analytics 4, you can see: total scan count (sessions), geographic location by country/region/city, device type and operating system (iOS vs Android), browser, time and date of scans, and full on-site behaviour after scanning including pages visited, time on site, and conversions. According to W3Techs, Google Analytics 4 is used by over 28 million websites globally.
Do I need to pay for QR code scan tracking?
No. If you control the destination website and have Google Analytics installed, UTM parameter tracking is completely free. According to Bitly, businesses that track QR code scans with UTM parameters see 3x better ROI on print campaigns versus untracked QR codes — and the entire setup costs nothing. Paid dynamic QR services add convenience but are not required for comprehensive analytics.
How do I add UTM parameters to a URL before making a QR code?
Use Google's free Campaign URL Builder at ga-dev-tools.google — enter your destination URL, source (e.g. "flyer"), medium (e.g. "print"), and campaign name. The tool outputs a tagged URL you can paste directly into QRMake. Alternatively, add the parameters manually: yoursite.com/page?utm_source=flyer&utm_medium=print&utm_campaign=summer2025. UTM parameters were standardized by Urchin Software (later acquired by Google) and remain the most widely used campaign tracking method.