Yes, dynamic, trackable and free. Many generators will give you one or two of these, but none will give you three. If you use Google Analytics and can create a page on your website, here’s why and how to do it yourself.
Stop paying for QR codes: Set up free, dynamic, trackable codes you actually control
What’s “dynamic” and why is it important?
A dynamic QR code lets you change where it sends people—even after you’ve printed it. Instead of being locked into one destination forever, you can update it anytime to point to a different page. Generator services may also call these “editable,” “redirectable,” or “smart” QR codes.
There are many kinds of QR codes, such as the vcard QR code we created for Fitzgerald Photo (which loads contact information right into the user’s address book). Some QR codes are fixed and some dynamic. The kind of QR code that sends people to a website—a URL QR code—can be dynamic, meaning the URL can change.
Sounds great, right? But relying on generator companies for this flexibility comes with serious drawbacks:
- You’re dependent on the QR service: If the provider slows down, goes offline, changes ownership, or adds fees later, your QR code can break—and any printed materials you’ve shared will instantly stop working.
- Your branding takes a hit: When someone scans your QR code, their phone shows the provider’s domain instead of yours, which can look unprofessional and make users less likely to trust the link (bad actors use this method).
- Your users’ data goes through the provider: Every scan passes through their servers, letting them collect your users’ IP addresses, rough locations, device info, and timestamps. This may create privacy or compliance issues for your business.
- You may get locked into the service: Most dynamic QR tools require an account and often introduce paid plans or limits later. If you ever want to change providers, you’d need to reprint with a new QR code.
- Your visitors may experience slower loading: Because dynamic QR codes redirect through another server before reaching your site, users can experience delays—especially if the QR service is having performance issues.
But you can make QR codes dynamic yourself, without having to use a generator service for that part.
Trackable within your site
Many QR-code generator services offer “Scan analytics,” “QR analytics,” “Tracking analytics,” or “Performance analytics,” but these tools only measure what happens before visitors reach your website. They can tell you how many times the QR code was scanned, when it was scanned, the device type, and the user’s approximate location—but that’s where their visibility ends. Once the visitor lands on your site, the QR provider has no access to what visitors do next. That deeper insight requires your own analytics tools, and this is where Google Analytics becomes essential.
With Google Analytics, you can learn more about what people do on your site after they scan your code:
- See how visitors move through your site: Understand which pages they view, in what order, and where they drop off, so you can improve your content and navigation.
- Track user engagement and behavior: Measure clicks, scroll depth, video plays, downloads, and other interactions that reveal what your audience finds interesting or useful.
- Measure conversions and goals: Know whether visitors complete purchases, fill out forms, sign up, or take other actions that matter to your business.
- Compare campaigns using UTMs: Identify which QR codes, print materials, or locations drive the most valuable traffic, helping you focus your marketing efforts and offerings to your audience.
- Optimize your site for results: Use real data about user behavior to refine your pages, improve performance, and increase the effectiveness of your QR-driven campaigns.
You can’t do any of this with QR-code generator services.
How to set up your free, dynamic, trackable QR code – three steps
1. Make it trackable
A. Decide on “UTM parameters” to use for your page URL. The UTM parameters you’ll want to use for this are utm_source, utm_medium, and utm_campaign. You must use all three or things won’t track correctly in Google Analytics. Determine what you’d like each to be, such as:
utm_source=brochure-1
utm_medium=qr-code
utm_campaign=winter25
The values can be most anything you’d like, including numbers, underscores and dashes, but cannot contain spaces or special URL characters. It’s also good to keep everything lowercase (for instance, Google Analytics will track “winter” and “Winter” differently).
B. Then put these in a “query string” beginning with a question mark and separated by ampersands like so:
?utm_source=brochure-1&utm_medium=qr-code&utm_campaign=winter25
Hold onto your string for a moment while we…
2. Make it dynamic
A. Create a new page on your site named for the code you will generate in the following step. You can name the page whatever you like, it can be cryptic and short because your users will never see the name or URL of this page—but it should make sense to you, and you should name it for the QR code, not the destination or what you’re using it for. After all, the destination or what it’s used for could change. I like to use something like “qr251121” which I understand as “the QR code I set up on November 21, 2025.” So my page would be https://wendyclarkdesign.com/qr251121/
B. Publish the page, but hide it from search engines — it’s irrelevant to them, will lower your site quality, and eat your crawl budget. In Wix, go to the page SEO settings and disable the “index this page” option. In Squarespace, use the “Hide page from search results” toggle. Or in WordPress, I recommend the Yoast SEO plugin (for other things as well as this); scroll down on the page to the Yoast SEO box and under the “Advanced” tab, set “Allow search engines to show this Post in search results?” to “No.”
C. Set up a “302 redirect” from this page to where you’d like your visitor to land today. If you want the visitor scanning your code to land somewhere different tomorrow, this is where you will change it—in the 302 (temporary) redirect. But you don’t want people to land on just a regular URL, you want them to land on a URL with your UTM parameters. So take your query string from step 1B and add it to the end of the destination. Your redirect should go from the URL of 2A to the URL you’re creating in this step. So your redirect should look something like mine:
from:
https://wendyclarkdesign.com/qr251121/
to:
https://wendyclarkdesign.com/portfolio-of-work/?utm_source=brochure-1&utm_medium=qr-code&utm_campaign=winter25
Make sure there is a slash at the end of the base URL and before the question mark.
In Wix you’ll use the “Redirect Manager.” In Squarespace you do this in Settings > Advanced > URL Mappings. In WordPress, you can use the premium version of Yoast SEO, or my favorite redirection plugin named simply Redirection.
D. Now visit the page you created in step A to confirm the redirect works and visitors will arrive in the right place. If it works…
3. Generate the QR code
A. Copy the URL of the page you set up in 2A, above. Mine is https://wendyclarkdesign.com/qr251121/ and generate the code.
Because most QR codes are scanned from printed items, it’s best to use a scalable (SVG, EPS) format that lets you make the code big enough for your use (it might be be a 1-inch sticker, it might be a billboard). But if you can only work with a JPG or PNG, try to export it large so you don’t need to stretch it. Stretched graphics get blurry and blurry codes are harder to scan.
I’ve tried dozens of QR code generators and, for this use, I’ve narrowed them down to the four below. These each have some customization options, but most importantly—as of this writing—they’re all free, non-branded, don’t require a login, provide a SVG (scalable) format, their codes don’t expire, you can make as many as you like, and they don’t track you or your users. Phew!
B. Once you download the code, test it. Show it on your desktop or laptop screen and scan it with your phone. Did you end up at the desired destination on your phone? Can you see the UTM parameters in the URL? Because you’re using your phone, it might be hard to see, but tap into the URL and scroll over to the end. If you see the UTM codes and Google Analytics is set up correctly on your site, you’re tracking!
C. Now before you forget, change the filename of that QR code so it matches your page name and you can keep track of it. I changed mine from qr.svg to qr251121.svg and put it with my brand assets for creating the brochure that will lead visitors to my portfolio page.
When is it better to use a paid service?
You might choose a paid service if you don’t have your own website, need to create codes in bulk, or want a faster setup—but you’ll trade away privacy, control, and your own branding to get it.
Want a hand with this?
I help clients set up dynamic, trackable QR codes and then design materials with those QR codes such as brochures, car magnets, signage, and other marketing and communication materials. If you’d like professional design paired with smart tracking, let’s talk.


