How to Track QR Code Scans (Free, Without Storing IPs)
To track QR code scans, you need a dynamic QR code. It points to a short redirect link, so every scan passes through a server that can count it. A static QR code cannot be tracked at all, no matter which generator made it.
This guide explains why, how to set up a trackable code for free, what each statistic means, and what is and is not stored about the people who scan.
Why static QR codes cannot be tracked
A static QR code has its data written directly into the pattern. If you encode https://example.com/menu, the phone reads that address from the squares and opens it. Nothing in between records the scan.
Scanning a static code never touches any server of ours, so there is nothing to count. The same is true for any static code from any tool.
The trade-off is that static codes never expire and never depend on a service. They also cannot be edited after printing. For the full comparison, see static vs dynamic QR codes.
How dynamic QR codes track scans
A dynamic QR code does not contain your final destination. It contains a short link on our domain, in this form:
https://generateqr.link/r/<code>
The flow when someone scans it looks like this:
- The phone camera reads the short link and opens it.
- Our server receives the request and records the scan.
- The server redirects the visitor to your real destination.
This takes a moment and the visitor usually does not notice. Because the destination is stored on the server and not in the pattern, you can also change it later without reprinting the code.
Dynamic codes on GenerateQR.link are free, but you need a free account to create and manage them.
Which QR code types can be tracked
Not every type can be dynamic. Here is what the site supports:
| Type | Dynamic (trackable) | Static only |
|---|---|---|
| URL | Yes | |
| Yes | ||
| Phone | Yes | |
| Yes | ||
| SMS | Yes | |
| WiFi | Yes | |
| Plain text | Yes | |
| vCard | Yes | |
| UPI | Yes |
If you want statistics for something that is static only, there is a workaround. For example, instead of a vCard code, you can put your contact details on a web page and make a dynamic URL code that opens it. You lose the direct "add contact" scan, but you gain the numbers.
How to set up a trackable QR code
- Create a free account and log in.
- Open the QR code generator and choose a dynamic type, such as URL, WhatsApp or Phone.
- Enter the destination. For a WhatsApp code, the destination is in the form
https://wa.me/<digits with country code>?text=<encoded message>. - Style the code if you like: dot shapes, corner styles, colors, a logo or a frame with text. The generator uses the highest error correction level (H), so a logo in the center stays scannable.
- Download as SVG for print or PNG for screens.
- Scan it with a real phone before you print anything.
If you only need a basic code and no numbers, create a static QR code for free without an account.
What the statistics show and how to read them
For each account, the dashboard shows these numbers for your dynamic codes:
| Statistic | What it tells you |
|---|---|
| Total scans | How often your codes were opened overall |
| Last 7 days | Recent activity |
| Last 30 days | The trend over a month |
| Top country | Where most scans come from |
| Countries | The split of scans by country |
| Devices | The type of device that opened the link |
| Operating systems | For example Android or iOS |
| Browsers | Which browser opened the link |
Total scans, last 7 days and last 30 days
Treat these as a measure of activity, not of audience size. Compare the last 7 days with the last 30 to see whether interest is growing or fading, and match changes with what you did, such as handing out flyers or posting a poster. Your own test scans may be included, so note how many you made before you judge the first results.
Countries
Location is approximate and works at country level. Use it to check whether the right audience is reaching you. If you hand out flyers in one town and most scans come from another country, check where the flyers actually ended up.
Devices, operating systems and browsers
These help you decide what the destination needs to work well. If almost all scans come from phones, make sure the page is built for a small screen, loads fast and shows its main action without scrolling.
Get cleaner data from your codes
Statistics only help if each number means something. A few habits make that easier:
- Use one code per placement. Make separate dynamic codes for the window poster, the flyer and the business card. Then you can compare them directly.
- Keep your own notes. Write down where each code is placed and when, so you remember what each one was for.
- Compare equal periods. Compare a week with a week, not a weekend with a Tuesday.
- Add a call to action. A frame with text such as "Scan for the menu" or "Scan to book" gives people a reason to scan.
- Add campaign tags if you use web analytics. You can append tags such as UTM parameters to your destination URL so your own analytics tool can tell sources apart. Check your analytics tool for the exact format it expects.
Privacy: what is and is not stored
The IP address of the person scanning is not stored. The statistics you see are country, device, operating system and browser.
Two more points are worth knowing:
- Static QR codes made in the generator are created in your browser, and their data is not sent to our servers.
- If you collect more data on your destination page, such as forms or analytics scripts, your own privacy duties apply there. Depending on where you operate, that may include a notice or consent. Check the rules that apply to you.
It is good practice to tell people what the code does, especially for sign-ups or payments.
Limits and common mistakes
Expecting tracking from a static code. If you already printed a static code, it will not suddenly produce statistics. You need to create a dynamic code and reprint.
Pausing or deleting a code that is still in circulation. A paused or deleted dynamic code shows a "not active" page when scanned. Before you pause one, make sure the printed material is gone or no longer needed.
Forgetting the dependency. A dynamic code relies on the redirect service. If the service were unreachable, the code would fail, while a static code keeps working. For something that must work forever with no dependency, such as a WiFi code on a wall, use a static code. The WiFi guest guide covers that case.
Poor print quality. No statistics will appear if people cannot scan the code. Keep dark code on a light background, avoid inverted colors, leave a clear margin of about 4 modules around the code and print it large enough for the distance. About 2 x 2 cm is a common minimum for close scanning, and bigger for distance. SVG is best for print at any size.
Reading too much into small numbers. Ten scans in a week will not tell you much. Collect data over a reasonable time before changing your design or your channel.
Using tracking for payments. UPI codes are static only and the site only creates the code. It does not process payments, so scans of those codes are not counted. See the UPI payment QR guide for details.
Start tracking your scans
Pick the one place where you most want to know whether your QR code works, such as a flyer, a poster or a business card. Make a dynamic code for it with the QR code generator, test it on a phone and check the numbers after a week. If you only need a simple link without statistics, a static code is enough and needs no account.
Frequently asked questions
Can I track a QR code I already printed as static?
No. The destination is fixed inside the pattern and nothing records scans. You would need to create a dynamic code and replace the printed one.
Do I need to pay to see QR code scan statistics?
Dynamic QR codes and their scan statistics on GenerateQR.link are free. You only need a free account to create and manage them.
Can I track WiFi, vCard or UPI QR codes?
Not directly, because those types are static only. If you need numbers, send people to a web page through a dynamic URL code instead.
Does the tracking store the scanner's IP address?
No, the IP address of the person scanning is not stored. You see statistics such as country, device, operating system and browser.
Why do my scan numbers look higher than expected?
Your own test scans may be counted, so note how many you made before judging the first results.