The short answer
A static QR code stores your content directly in the pattern. It is free, works forever, and nobody can switch it off. A dynamic QR code stores a short link to someone else’s server, which forwards visitors to your page. It lets you change the destination and count scans, but it only works while that server, and usually your subscription, keeps running.
For most people, a static code pointing at a page they control gives the best of both. The rest of this guide explains why, and when a dynamic code is still the better choice.
How a static QR code works
When you make a static code, the generator turns your text into a pattern. If the text is https://example.com/menu, that exact address is what the phone reads, and it opens it directly. There is no middleman.
That has some useful consequences:
- It never expires. There is no account to lapse and no service to shut down. If your link works, the code works.
- It is private. Nobody sits between the scan and your page, so nobody else records who scanned it.
- It works offline for content that doesn’t need the internet, such as Wi‑Fi details, contact cards and plain text.
- It can’t be edited. To change what the code contains, you make a new code. That is the one real drawback.
Every code made on 3D-QR is static, including the animated and 3D-printable ones.
How a dynamic QR code works
A dynamic code contains a short address on the QR provider’s domain, something like qr-service.example/a8F3k. When someone scans it, their phone visits that address first. The provider’s server records the visit and redirects the phone to the destination you set in your account. Change the destination in the dashboard and every printed code now goes somewhere new.
What you gain:
- Editable destination without reprinting.
- Scan statistics such as counts, rough location and device type.
- A shorter code, because the short link has fewer characters than a long address.
What you take on:
- A dependency. If the provider goes out of business, changes its terms, or your plan ends, the redirect can stop and every printed copy breaks at once.
- Ongoing cost. Dynamic codes are usually part of a paid subscription. Some “free” generators make dynamic codes by default and deactivate them when a trial ends, which many people only discover after printing.
- Extra delay from the redirect, and sometimes an advert or branded page in between.
- Someone else’s domain in the link, which makes it harder for people to check that the code is genuine. See how to spot a QR code scam.
Side by side
| Static | Dynamic | |
|---|---|---|
| Cost | Free | Usually a subscription |
| Expires | Never | When the service or plan ends |
| Change destination | Only by making a new code, or by changing the page it points to | Yes, in the provider’s dashboard |
| Scan statistics | Through your own website analytics | Built in |
| Works without internet | Yes, for Wi‑Fi, contacts and text | No, it always needs the redirect |
| Privacy | No third party involved | The provider logs each scan |
The free middle way: a static code that points to your own page
Most of what people want from a dynamic code is the ability to change things later. You can get that without a subscription by pointing a static code at a stable address that you control, and changing what that address shows.
- A restaurant points its code at
yourrestaurant.com/menuand edits that page when prices change. See the guide to QR code menus. - An event points at
yourevent.com/scheduleand updates it on the day. - A product box points at
yourbrand.com/manual, which can later redirect to a new version of the manual.
If you’d rather forward to another site, most hosts let you set up a redirect on your own domain. Cloudflare has redirect rules, Netlify and similar hosts use a redirects file, and WordPress has redirect plugins. Your code then contains yourdomain.com/go, and you choose where /go leads.
This gives you an editable code that only depends on your own domain. As long as you renew the domain, the code keeps working.
What about tracking scans?
You don’t need a dynamic code to measure results. Add campaign tags to the link in a static code, or give each placement its own short page, and your normal website analytics will show the visits. The guide on tracking QR code scans for free walks through it step by step.
When a dynamic code is the right choice
Dynamic codes earn their cost in a few situations:
- You print in large volumes, the destination will definitely change, and you don’t have a website where you can set up redirects.
- A team needs to manage hundreds of codes from one dashboard, with permissions and reporting.
- You need scan data from people who never reach your website, for example when the destination is a third-party page you can’t add analytics to.
If you go dynamic, choose an established provider, read what happens when you cancel, and check whether you can use your own domain for the short links. Using your own domain means you can move to a different provider later without reprinting.
Questions to ask before paying for dynamic codes
If you decide a dynamic service is right for you, these questions protect your printed codes:
- What happens when I cancel? Do existing codes keep redirecting, stop, or show the provider’s page instead?
- Can I use my own domain for the short links? If so, you can move to another provider later without reprinting.
- Can I export my codes and destinations if I leave?
- Are there scan limits on my plan, and what happens when I go over?
- Is there anything between the scan and my page, such as an advert, a branded screen or a delay?
- What scan data is collected, where is it stored, and does it fit your privacy policy?
Not sure what an existing code is? The no-expiration QR code generator page explains how to check, and how to replace a code that has stopped working.