Every QR code is one of two things: static or dynamic. The terminology is confusing because the QR pattern itself is always static — the same square of pixels every time. The difference is what it points to. A static QR encodes the final URL directly. A dynamic QR encodes a short URL that redirects to whatever destination you set in your dashboard.
The choice between them feels minor until you've reprinted 5,000 stickers because your URL changed. This guide is the decision framework I wish more people had before they printed.
What static QR codes actually do
A static QR contains the destination URL inside the pixel pattern itself. Generate one for example.com/menu and the QR code permanently resolves to example.com/menu — you can't change it without generating a new code. The QR works forever (assuming the destination URL still works), is free to generate, doesn't require an account, and never depends on a third-party service staying online.
The catches: zero analytics (you don't know how many times anyone scanned), no destination flexibility (URL change = reprint), no expiration control. For a contact card QR sticker on the back of a business card, this is fine. For anything you might want to update or measure, it's a future problem.
What dynamic QR codes actually do
A dynamic QR encodes a short URL — usually something like qr.example.com/abc123 — that lives on a vendor's redirect server (or your own). When scanned, the request hits the redirect server, gets logged, and forwards to the actual destination URL stored in the dashboard. Update the dashboard, every existing QR code points somewhere new.
You get scan analytics, destination editing, scan-time data, and (on most platforms) restrictions like geo-routing or password gates. You also get a dependency: if the redirect service dies, every QR code you printed becomes useless. Choose the service like you'd choose a hosting provider.
When static is the right call
- Personal contact cards (vCard QR): The QR encodes contact info directly — name, phone, email. No redirect needed. Lasts forever, even if you go offline.
- WiFi credentials in a coffee shop or office: Encode network name and password. Works offline once decoded. Update only when you change credentials (rare).
- Permanent landmarks (tombstones, dedications, plaques): Anywhere the destination is meant to never change. The QR pattern itself can outlast any redirect service.
- One-off promotional codes: A QR that contains a discount code as plain text. Useful for "scan to copy code" patterns.
- Anywhere you want zero dependency on a vendor: Especially government, archival, or long-term-installation use cases.
When dynamic is the right call
- Marketing campaigns: You want to know which campaign drove engagement. Static gives you nothing; dynamic gives you scans by time, location, device.
- Restaurant menus, product packaging, retail signage: Anything that might update. Update the destination, never reprint.
- Multi-region campaigns: One QR code, different destination based on visitor's country (geo-routing). Static can't do this.
- A/B testing: Same physical QR, different landing pages on different days, comparing conversion rates.
- Anything print-once, regret-later prone: If there's a chance you'll want to change the destination, dynamic pays for itself the first time.
The real cost comparison
Static QR generators are free. Dynamic QR services charge $5-50/month depending on features. Over 5 years, that's $300-3000 in subscription fees. For most use cases, this is trivial compared to the cost of reprinting marketing materials when a URL changes.
The economic break-even is roughly: if the cost of reprinting all the QR-bearing materials would be more than $300 once, dynamic pays for itself. A restaurant printing 200 menus, packaging brand printing 10,000 boxes, or a museum installing 500 plaques — all clearly dynamic territory.
The vendor lock-in concern
Dynamic QR services have a real lock-in: the short URL in the QR code depends on their redirect infrastructure. If Beaconstac shuts down, every QR code printed using their short URL becomes dead.
The mitigation: pick services that let you use a custom domain. Then the redirect happens at qr.yourdomain.com/abc, not vendor.com/abc. If the service shuts down, you point qr.yourdomain.com at a different redirect provider and existing QR codes keep working. Services that support custom domains: Beaconstac, QR Code Generator, Bitly QR (paid tier), self-hosted.
Services that don't let you bring your own domain are a future migraine. Avoid them for anything you'll print at scale.
Self-hosted dynamic QR setup
For high-volume use cases, hosting your own QR redirect is straightforward and removes vendor risk. Setup:
- Get a short domain ($10/year). Three letters is ideal — eg.com, qr.me, etc.
- Install YOURLS or Kutt on a $6/month VPS.
- Generate QR codes with destinations like qr.yourdomain.com/abc using any free QR generator (just convert the URL into a QR pattern).
- Manage all destinations from one dashboard.
Total cost: ~$15/month for unlimited QR codes, unlimited scans, your data forever. The only thing you lose vs SaaS dynamic-QR providers is the prebuilt analytics dashboard — though Plausible or Umami plugged into the redirect logs gives you 90% of what those dashboards show.
Print quality and scan reliability
Both static and dynamic QR codes have the same physical scan-reliability rules. Three things that matter:
- Error correction level: Choose Level H (30% redundancy) for outdoor or high-wear placements. The QR will still scan with 30% of the pattern damaged.
- Size on the printed surface: Minimum 2cm × 2cm at typical reading distance (50cm). Bigger is always better.
- Print contrast: Pure black on pure white. Inverse (white on black) drops scan reliability by 20%. Color schemes drop another 15-30% depending on hue.
The hidden third option: indirect dynamic
If you want some flexibility but don't want a dynamic-QR vendor relationship: encode a static QR that points to a URL you control, then the URL itself does the redirect via your own server. This is the same idea as dynamic QR but built on infrastructure you already have (your website + a 301 redirect).
Pattern: example.com/menu in the QR. On your server, configure example.com/menu to redirect to current-month-menu.pdf. Change the redirect, the QR code keeps working. Free, vendor-independent, and gives you basic scan analytics from your existing web logs.
The only feature you give up vs commercial dynamic QR: pretty per-scan dashboards. Server logs aren't as nice. But for many small businesses, this is the sweet spot.
Decision framework I'd actually use
Ask three questions in order. Will the destination ever change? If no, static. If yes, ask the next question. Do you need scan analytics? If no, indirect dynamic via your own redirect is enough. If yes, ask the last question. Do you control your own domain or are you OK depending on a vendor's domain? If you control your own, self-host or use a service with custom domains. If you don't care about lock-in, any commercial dynamic QR service is fine.
Most decisions land at "yes, yes, my own domain." Self-hosted dynamic QR or commercial-with-custom-domain. The static-versus-dynamic debate is mostly about cost ($0 vs $10/month), and the cost of being wrong about which one to pick is usually higher than the subscription.