Static vs. Dynamic QR Codes: Which Is Right for Your Use Case?
Static QR codes are free and never expire. Dynamic codes give you analytics and editable destinations. Here's how to choose.
The phrase "dynamic QR code" gets thrown around like it's a different technology, but it isn't. Every QR code, without exception, encodes a fixed string of text — usually a URL. What people call a "dynamic" QR code is just a QR code whose URL points at a redirect service that the owner can change later. Same QR, different destination.
The distinction still matters, because the trade-offs are real. Static codes are free, permanent, and never depend on an external service. Dynamic codes give you analytics and editable destinations in exchange for an ongoing subscription and a third-party dependency. This article walks through how to think about that trade-off so you can pick the right tool.
What "static" means
A static QR code is one where the URL printed into the code is the actual URL you want users to land on. If you generate a code that encodes https://yourbusiness.com/menu, scanning it opens that page directly. There's no middleman.
Properties:
- Free. Tools like QR This! generate static codes at no cost.
- Permanent. The code works as long as your destination URL works. If you keep paying for your domain, your QR code keeps working.
- No analytics by default.You don't know how many people scanned it unless your destination page itself measures incoming traffic.
- Not editable. If you change your domain or move the page, anyone with the printed code is now landing on a 404 (or worse, a domain squatter).
What "dynamic" means
A dynamic QR code encodes a URL at someone else's domain — the QR service's — and that service redirects to your actual destination at scan time. Examples: qr.acme.io/abc123 → 301 redirect → https://yourbusiness.com/menu.
Because the redirect happens server-side, you can do two things you can't do with a static code:
- Edit the destination after the code is printed. Change
qr.acme.io/abc123to point at a new URL and every existing scan now goes there instead. - Track analytics — count of scans, geography, time-of-day, device, sometimes referrer.
The cost of these features is real:
- Subscription required. Most dynamic-QR services charge $5–$30 per month per organization, plus per-code limits.
- Third-party dependency. If the service changes pricing, gets acquired, or shuts down, every dynamic code you ever printed could break.
- Slightly slower scans.Users hit the redirect server first; if it's slow or down, scans fail.
- Sketchy-looking domains. Some dynamic services use intentionally short or anonymous domains, which can trigger phishing warnings on iOS Safari.
Picking the right one
Use a static code when…
- You own the destination domain and aren't planning to change it.
- The destination is a generic, evergreen page — your homepage, a permanent menu link, your contact card.
- You don't need scan analytics, or your destination is a page on a site you already analytics-track (which captures the same information).
- The QR will be printed in a hard-to-recall medium — packaging, tattoos, vehicle wraps, plaques, books. Permanence matters.
- You don't want a recurring bill.
Use a dynamic code when…
- The destination URL is likely to change — a campaign landing page, an event you'll repurpose next year, or a product page that gets restructured.
- You need granular scan analytics that your destination analytics can't capture (e.g. tracking the same code across two different campaigns).
- You're running a print campaign that could outlive your current site architecture (corporate rebranding, domain migrations, etc.).
- You can absorb the recurring cost and the third-party risk.
The hybrid approach: own the redirect yourself
There's a third option a lot of teams overlook: encode a URL on a domain you control and run the redirect yourself. For example, encode https://yourdomain.com/qr/spring-2026and have your web server return a 302 redirect to wherever you want. You get all the benefits of dynamic codes (editable destination, analytics via your own logs) without the third-party risk or the monthly subscription.
On most stacks this is a one-line edit. On Next.js it's a single entry in next.config.ts:
async redirects() {
return [{
source: "/qr/spring-2026",
destination: "https://yourdomain.com/sale",
permanent: false,
}];
}On a static host like Netlify or Vercel, the same is one line of config. You now have an editable QR destination that's as durable as your domain.
What about analytics?
Most teams who think they need a dynamic QR service really just need to know one thing: how many people scanned this code and where did they go? If your destination is on a site you already operate, your existing analytics already answer this — you just need to add a UTM parameter to the encoded URL:
Encode https://yourbusiness.com/menu?utm_source=qr&utm_campaign=table-tent and your analytics dashboard tells you how many menu visits came from the table-tent QR code, segmented by whatever you want.
The bottom line
Most websites and small businesses are best served by static QR codes pointing at URLs they own — generated for free, with UTM parameters where they'd like to track. Dynamic services are worth paying for when the editable-destination feature is genuinely critical (campaign-level QR codes that swap targets) and the recurring spend is justified.
If you're here to make a free, permanent QR code, QR This! has you covered.