Static vs Dynamic QR Codes: Which Should You Use?
The real difference between static and dynamic QR codes โ what they cost, who controls them, and which one fits your campaign.
Almost every QR code generator markets two flavors: static and dynamic. The pricing pages make it sound like a feature gap, but the difference is structural โ they're two different ways of encoding the same idea, with very different long-term consequences.
This post breaks down what's actually happening, when each one is the right call, and why "free dynamic QR codes" almost always come with a catch.
How a static QR code works
A static QR code bakes your destination directly into the printed pattern.
If you encode https://qropi.com, the modules in the QR pixel-by-pixel encode that exact string. There is no server in the loop. A scanner reads the modules, decodes the string, and follows it. Done.
Implications:
- The destination cannot change once printed. You'd have to reprint.
- There's nothing to track on the server side โ you can't see how many people scanned it (unless your destination URL has its own analytics).
- It will work forever. Static QRs from 2010 still scan today.
- Nobody can shut your QR off. There's no service to go out of business.
How a dynamic QR code works
A dynamic QR encodes a short URL pointing to the generator's redirect server โ for example https://meqr.example/r/abc123. The user's phone hits that URL, the server looks up where it should redirect today, and sends the user there.
Implications:
- The destination can be changed at any time without reprinting.
- The provider can collect scan data: time, IP, user agent, rough geolocation.
- The provider stands between your customer and your destination. If they go down, paywall, sell out, or get blocked, your printed QRs stop working.
- The user often hits an ad or interstitial page before reaching your real URL.
That last point is what most people don't realize until they print 10,000 menu cards.
The "free dynamic QR" trap
Many sites advertise free dynamic QR codes. Read the terms:
- The free tier expires. After 14 days or 12 months, your QR stops redirecting.
- The free tier shows ads. A full-screen ad before the user reaches your menu, your business card, your event page.
- The provider rate-limits you. After N scans, redirects start failing.
- The data is yoursโฆ until it isn't. If you stop paying, your scan history is deleted (some providers explicitly say "1 year retention on free plan").
Static QRs avoid all of this because there's no server to depend on.
When dynamic actually makes sense
Dynamic QRs aren't bad โ they solve real problems. Use them when:
- The destination genuinely needs to change. A weekly menu, an event landing page that moves dates, a marketing campaign that A/B tests.
- You need attribution. You're running a campaign across print, billboards, and packaging, and you need to know which channel drove the most scans.
- You're willing to pay for it. A reliable dynamic QR service costs $5โ$30/month. That's the honest price of a redirect server with no ads.
If any of those don't apply, static is almost always the right call.
When static is enough
- Your URL won't change for years (your homepage, your LinkedIn, your Instagram)
- A WiFi password
- A vCard
- A payment QR (these are required to be static for security)
- An app store deeplink that auto-detects iOS vs Android โ Qropi can do this client-side without a server
For 80% of "I need a QR code" moments, static is the right answer and dynamic is overkill.
How to migrate from dynamic to static
If you're on a dynamic provider that's about to expire or paywall:
- Decode the current redirect target โ open the dynamic QR's URL in a browser and copy where it lands.
- Generate a new static QR pointing directly to that destination.
- Reprint or replace stickers as needed.
You lose scan analytics in the migration, but you also lose the recurring fee and the dependency. For most use cases, that's the right trade.
What about scan tracking on static QRs?
You can't track scans of the QR itself (no server in the loop), but you can track visits at the destination:
- Add UTM parameters to your destination URL (
?utm_source=qr&utm_medium=poster&utm_campaign=launch) - Use your destination site's analytics (Google Analytics, Plausible, Vercel Analytics)
- Pick a unique landing page per QR campaign โ
/promo/springinstead of just/
This gets you 90% of the analytics value without paying for redirect-as-a-service.
TL;DR
| Static | Dynamic | |
|---|---|---|
| Server needed | No | Yes |
| Editable after print | No | Yes |
| Built-in scan analytics | No | Yes |
| Cost | Free, forever | Subscription |
| Vendor lock-in | None | High |
| Speed | Instant | One redirect hop |
| Risk of breaking | Near zero | Provider-dependent |
For most people, on most days, start static and stay static. Move to dynamic only when you have a concrete reason that pays for itself.
Generate a static QR for free at Qropi โ no signup, no ads in your code.