Static vs Dynamic QR Codes: What Is the Difference and Which to Use?

Short answer
What is the difference between a static vs dynamic QR code?
A static vs dynamic QR code comparison comes down to where the content lives. In a static code, the URL or text sits directly inside the pattern, so it never changes. A dynamic code, on the other hand, stores only a short link owned by a provider, and that link redirects visitors to a destination you can edit later.
In other words, the difference sits behind the pattern, not in it. In practice, a phone camera reads both types the same way. However, one code depends only on you, while the other depends on a subscription. If you want a free static code, you can use our QR code generator; it builds the code in your browser and ties it to no service.
At Talha Aslan and team, we see this question constantly on brochures, menus, packaging and trade show work. This guide explains how each type works and what happens when a subscription ends. It also covers how to measure scans and how UTM parameters give you a free tracking alternative. That way, you can pick the right type before anything goes to print.
How does a static QR code work?
A static QR code holds all of its information inside the modules, the small black and white squares. For example, if you encode https://example.com/menu, the camera decodes that text from the pattern and the browser opens the address directly. No extra server, account or redirect layer sits in between.
This is the original design of the QR code. DENSO WAVE notes that the QR code is an ISO/IEC 18004 standard. Any phone that follows the standard can read a static code without permission from a company. As a result, a static code keeps working for as long as the printed item exists.
A static code can carry many content types:
- A website URL.
- Plain text, such as a discount code.
- Wi-Fi network name and password.
- Contact details in vCard format.
- An email or WhatsApp message link.
That said, a static code has one limit. To change its content, you need to create a new code and print it again. Later in this guide, we show a practical way around that limit.
How does a dynamic QR code work?
A dynamic QR code is really a static code that contains a short link. The pattern holds an address on the provider's domain. When a phone opens that address, the provider's server answers the request and forwards the visitor to the destination you set in your dashboard.
So the word "dynamic" describes the redirect, not the pattern. When you change the destination, the printed code stays the same; only the redirect target moves. In addition, every request passes through the provider's server, so the dashboard can show scan counts, time of day and approximate location.
The sequence looks like this:
- A person scans the code with a phone camera.
- Next, the phone opens the short link in a browser.
- The provider's server logs the request.
- After that, it redirects the visitor to the destination URL.
- Finally, the browser loads the destination page.
In short, every advantage of a dynamic code comes from that middle server. Likewise, every risk depends on it. If the server slows down, the page loads later. If the account closes, the redirect stops.
One more point also causes confusion. The static vs dynamic QR code split has nothing to do with the technical standard of the pattern. Both follow the same standard, and the same cameras read both. Because of this, you cannot tell a dynamic code apart by looking at it. Instead, scan it and check whether the first address belongs to a provider or to the brand's own domain. This quick test also helps when an agency or print shop hands you a finished code.
Static vs dynamic QR code comparison table
The table below compares both types on the points that matter before you approve a print run. The third column shows the middle path we recommend most often: a static code that points to a permanent short URL on your own domain.
| Criterion | Static QR code | Dynamic QR code | Static code plus redirect on your own domain |
|---|---|---|---|
| Where does the content live? | Inside the pattern | On the provider's server | Your URL in the pattern, target on your server |
| Can you change the destination after printing? | No | Yes, in the dashboard | Yes, through your own redirect |
| What happens when a subscription ends? | Nothing | The code may stop working | Nothing, as long as you renew your domain |
| Scan tracking | None built in | In the provider dashboard | UTM data in your analytics and your server logs |
| Who holds the data? | Nobody | The provider | You |
| Works for Wi-Fi and vCard? | Yes | Usually only through a landing page | No, web addresses only |
| Cost | Free | Usually a recurring plan | Your existing domain and hosting |
The takeaway is clear. In other words, you trade flexibility against independence. The third column combines most of both, because the redirect stays in your hands.
What happens to a dynamic QR code when the subscription ends?
The biggest risk of a dynamic code is that its life depends on the provider's account, not on you. The printed pattern never breaks. However, the short link inside it belongs to the provider's domain. If the account closes, a payment fails or the provider shuts down, that link no longer reaches your page.
Consider an example scenario. Specifically, a shop prints a dynamic code on thousands of product boxes. Then the trial ends, and the code starts landing on a notice page or an error page from the provider. Because nobody can recall boxes that customers already own, the brand now shows buyers a page it does not control.
There is also a less visible side. Also, some providers may show their own page or ads before the redirect on free plans. Therefore, we suggest reading the terms before you print. Above all, look for clear answers to three questions:
- How long do codes keep working after the subscription ends?
- Can you move the codes to another service or to your own domain?
- Does the free plan show an interstitial page before the redirect?
If the answers stay vague, a static code tied to your own domain is the safer choice for long-lived print.
Can you edit a static QR code after printing?
No, you cannot change the content inside the pattern. The code is a visual form of the text it holds; if you change the text, the pattern changes too. So "editing" a static code really means making a new one.
Still, there is an important distinction. You cannot change what the code says, but you can always change what its address shows. If the code opens https://example.com/menu, you can update that page as often as you like. Prices change, photos change, the menu changes; the code still opens the same URL.
Consequently, the trick to an editable static code is to encode a permanent entry URL rather than a final page URL. Suppose your campaign page address changes every season. In that case, you encode a fixed address such as https://example.com/qr/catalog. Your server then forwards that address to the current season's page. As a result, the print stays the same, and the destination changes under your control.
This method does not work for Wi-Fi, vCard or plain text codes, because their content is not an address. When you change your Wi-Fi password, you need a new code as well. Knowing this early therefore helps you plan print materials around how often the password changes.
How do you set up a redirecting QR code on your own domain?
This approach gives you the flexibility of a dynamic code without depending on a third party. The logic is simple, because only two parts move. You encode a short URL on your own domain, and your server forwards it to any page you choose. When the destination changes, you update only the redirect rule.
Which redirect type should you use? Google Search Central explains in its redirects documentation that 301 and 308 mean a page has moved permanently. By contrast, codes such as 302 and 307 are temporary redirects. That is why the choice matters here. For a QR entry URL whose target changes each season, a temporary redirect makes sense; the entry URL is permanent, but its target is not. We cover the details in our guide to 302 redirects.
Follow these steps:
- Pick a short, meaningful entry URL, for example example.com/qr/menu.
- Point it to the destination page in your server settings or your CMS redirect section.
- Confirm that the redirect reaches the destination in a single hop.
- Encode the entry URL in the QR code and send it to print.
You can confirm that no redirect chain forms with our redirect checker.
How do you track QR code scans?
With a dynamic code, scan tracking happens on the provider's server. The server logs each open as a request. The dashboard then shows totals, time patterns and device types. These numbers help, but they have limits.
First, the dashboard counts requests, not people. If one person scans twice, you may see two entries. Some phones and apps also send a separate request to preview a link. Second, location data is usually an IP based estimate, so it can drift at the city level. Third, a scan count alone says nothing about business results. You do not learn whether the visitor filled out a form or bought something.
A static code has no server that counts scans directly. However, that does not mean you cannot measure anything. Add campaign parameters to the encoded URL, and your analytics tool will show the visits by channel. If you use a redirect on your own domain, your server logs also record the requests.
Put simply, the two methods answer different questions. A dynamic dashboard answers "how often did people open it?" in rough terms. Campaign data in your analytics answers "what did these visitors do on the site?" For marketing decisions, the second question usually matters more.
Why are UTM parameters a strong tracking alternative?
UTM parameters are tags you add to the end of a URL to tell your analytics tool which campaign sent a visit. Google Analytics Help, on its page about collecting campaign data with custom URLs, says you should always use utm_source, utm_medium and utm_campaign. It also notes that missing parameters lead to "(not set)" values in reports.
For QR codes, this method has three strengths. First, the data builds up in your own analytics account, not in a provider dashboard. Second, you see what visitors do on the site, including conversions and the pages they visit next. Third, you can tag each print item separately.
For example, if one campaign uses both a flyer and a poster, set utm_content to "flyer" and "poster". You can then compare the two sources with data instead of guesses.
We explain naming rules and each parameter in our guide to UTM parameters. Also remember that values are case sensitive. "Flyer" and "flyer" show up as two separate rows in your reports.
How do you create a trackable static QR code step by step?
The steps below are the shortest route to a QR code that you can measure and that depends on no subscription. Follow them in order, and you will catch most mistakes before printing.
- Choose the destination page and check that it loads fast on mobile.
- Open our UTM builder, enter the URL, and set the source to "qr", the medium to "print" and the campaign to your campaign name.
- Add the print item to the content field if needed, for example "table-card".
- Copy the long tagged URL.
- If you use a redirect on your own domain, set that tagged URL as the target of your short entry URL.
- Open the QR code generator, choose the Web / URL type, and type the short entry URL or the tagged URL into the field.
- Choose a dark code on a light background, and raise the error correction level for small prints.
- Download SVG for print and PNG for screens.
- Print the code at its real size and scan it with at least two different phones.
- Check the realtime report in your analytics tool and confirm that the visit appears with your campaign name.
A short entry URL has one more benefit. For example, if you encode the long tagged URL directly, the pattern gets denser. A short URL needs fewer modules, so phones decode it more easily on small prints.
Which code should a cafe menu use? An example scenario
As an example scenario, picture a cafe with table cards. The cafe updates its menu each season, yet it prints the cards once a year. It also wants to know how many guests view the menu and how many move on to the ordering page.
At first glance, a dynamic code covers this easily. However, the cards stay on the tables for a full year, so the subscription term becomes critical. If a payment fails, every table loses its working code at the same moment. In addition, the scan data builds up in the provider's account, not the cafe's.
Here is the alternative setup. The cafe encodes example.com/qr/menu. Its server then forwards that address to the current menu page. The target URL carries utm_source=qr, utm_medium=print and utm_campaign=table-menu. When the menu changes, the cafe edits the page content. If the menu URL changes completely, the cafe updates the redirect target.
With this setup, the cafe gets:
- The option to change the destination without reprinting the cards.
- No risk of an outage tied to a subscription end date.
- Menu visits and clicks to the ordering page in its own analytics account.
Actual numbers depend on the cafe's traffic. Instead, the point here is to show the logic of the setup, not to promise a result.
When does a dynamic QR code make sense?
A dynamic code is not a bad choice in every case. It can work well when you lack the technical means to set up redirects on your own server and you need a quick fix for a short project.
Dynamic codes stand out in these situations:
- Short events, such as a trade show or a launch that lasts a few days.
- Small businesses without their own domain or website.
- Teams that manage many codes from one dashboard and have budgeted for the plan.
- Projects where the destination changes often and technical help is hard to get.
Even then, we recommend a few safeguards. Add UTM parameters to the destination URL if you can; that way, visit data stays in your analytics even if the dashboard disappears. Also note the renewal date in your calendar and think about how long the print will stay in circulation.
Finally, ask whether the provider lets you use your own domain. For instance, some services can run the short link on a domain you control. If that option exists, you can move the codes to your own server later without reprinting.
When is a static QR code enough?
For most businesses, a static code is not only enough but also the safer choice. If the content is fixed, or if you use a permanent URL on your own domain, you do not need a dynamic service.
A static code should be your first pick for:
- Content that is not a URL, such as Wi-Fi access, vCards and plain text.
- Print that stays in circulation for years, such as packaging, labels and signs.
- Codes that point to a permanent page on your own domain.
- Corporate or sensitive uses where you want to share as little data as possible.
For instance, if you place a link to a user manual on product packaging, that product sits on shelves and in homes for a long time. Encoding a permanent URL such as example.com/manual carries far less risk than a short link tied to a subscription.
A static code can also open faster, because there is no extra server stop. The gap may look small, yet visitors on slow mobile connections can feel it. In short, if the content is fixed or the redirect is yours, a static code is the simple and solid option.
How does code content affect scannability?
The longer the content, the more modules a QR code needs. At the same print size, more modules mean smaller squares. That can make scanning harder from a distance or in low light.
This is why the short link in a dynamic code helps scannability. Still, you can get the same benefit with a static code. Instead of encoding the long tagged URL, encode your short entry URL and put the UTM tags on the redirect target.
Error correction is also part of this balance. DENSO WAVE states that level M is the most frequently selected level and can restore about 15 percent of damaged data. A higher level makes the code more resistant to damage, but the same content then needs more modules.
Practical tips:
- Keep the encoded URL as short as possible.
- Use a dark code on a light background and avoid inverted colors.
- Leave a clear margin around the code.
- Test the code at its real printed size.
If a code will not scan, our guide on QR codes not scanning walks through the likely causes one by one.
What should you consider about data privacy?
Put simply, with a dynamic code every scan passes through the provider's server. As a result, a third party may log data such as IP addresses, device details and timestamps. Under data protection laws, this makes your agreement with the provider and your privacy notice more important.
This article is not legal advice; please ask a lawyer about your specific case. From a marketing point of view, though, these questions are worth asking:
- In which country does the provider store scan data, and for how long?
- Does the provider use the data for its own purposes?
- Does the provider delete the data when you close your account?
A static code, however, removes this layer. The code opens your site directly, and visit data appears only in the analytics tool you choose. For sensitive contexts such as education or official documents, a static code on your own domain keeps the setup simpler.
On the other hand, responsibility stays with you on a static code too. Your site's analytics and cookie choices apply to visitors who arrive by QR as well. In other words, knowing where you collect data matters no matter which code you pick.
What should you ask before choosing a dynamic QR provider?
If you decide to use dynamic codes, judge providers by their exit terms rather than their price. After all, the real risk shows up on the day you leave the service. We do not recommend any specific provider; the checklist below applies to all of them.
- Which page do codes show after the subscription ends?
- Can you run the short link on your own domain?
- Can you export the codes and the destination list?
- Which status code does the provider use for the redirect?
- Does the free plan include an interstitial page or ads?
- How long does the provider keep scan data, and can you export it?
- How much notice will customers get if the service shuts down?
In practice, getting these answers in writing reduces surprises later. The second question matters most. A dynamic code that runs on your own domain needs no reprint when you switch providers.
We explain how we assess short link services in general in our URL shortener comparison. The same logic applies to QR code providers.
How do you move existing dynamic codes to your own setup?
If you already have dynamic codes in print, plan a gradual switch instead of shutting them down in one day. The goal is to keep current codes working until the print runs out and to use your own setup for new print.
Our suggested order:
- Export every dynamic code and its destination URL from the dashboard.
- Note where each code appears in print and how long that print will stay in circulation.
- Create short entry URLs on your own domain for each destination.
- Use only static codes with these entry URLs on new print.
- Keep the dynamic plan active until the old print leaves circulation.
If the provider supports your own domain, the switch is much easier. In that case, you point the domain's redirects to your own server, and the old codes keep working on your setup.
During the move, check that every old URL reaches the right destination. If you are moving many URLs, our article on how long redirects should stay will help with planning.
What are the most common QR code mistakes?
Whatever the code type, the mistakes we see most often come from small oversights before printing. Use the list below as a checklist before you sign off on a print proof.
- Printing on a trial plan: placing a dynamic code from a free trial on long-lived print.
- Sending people to the home page: pointing the code to a generic home page instead of the campaign page.
- A destination that fails on mobile: a page that loads slowly or reads poorly on a phone.
- No tracking: a code printed without UTM tags, so nobody sees the result.
- No test print: a code that works on screen but not at its real size.
- A temporary URL: a code that points to a page you delete when the campaign ends.
The last point deserves attention above all. When the campaign page disappears, the code lands on an error page. Instead, when a campaign ends, redirect the entry URL to the relevant category page or the current campaign.
We cover how print materials connect to the full digital experience in our guide to moving a print brand identity to digital.
How do you choose between a static vs dynamic QR code?
In practice, three questions settle the choice. First, is the content a web address? If it is Wi-Fi access, a vCard or plain text, a static code is the natural pick. Second, how long will the print stay in circulation? A long life makes a subscription based code risky. Third, can you set up redirects on your own domain?
If the answer to the third question is yes, the most balanced option in most cases is a static code, a permanent entry URL on your domain and UTM parameters. This setup delivers most of the flexibility and tracking of a dynamic code and removes the subscription risk. If the answer is no and the project is short, a dynamic code can be a practical choice. Still, add UTM tags to the destination URL.
In short, the choice is not about technology but about control. You decide who manages the life of the code, the location of the data and the ability to change the destination.
At Talha Aslan and team, we suggest planning tracking for print campaigns together with your analytics setup. Otherwise, if campaign tags stay inconsistent, QR visits can vanish in reports. Our guide to GA4 unassigned traffic helps with that as well.
Core guide: What Is Digital Marketing? Its types, examples and how it is done, on one page with an interactive film that travels through the brain.



