TL;DR: Use a static QR when the destination will never change (your WiFi network card, a vCard on a tombstone). Use a dynamic QR for literally everything else — especially marketing, menus, packaging, signage, or anything you want to measure.
The fundamental difference
A static QR code encodes your destination directly into the black-and-white pattern. If you encodehttps://example.com/menu, the URL is physically baked into the dots. Change the URL → different dots → you have to reprint.
A dynamic QR code encodes a short redirect URL that you own (for example, https://qrx.io/a3b9c2). When someone scans it, our servers look up the current destination and redirect. The printed pattern never changes — but the destination can change anytime you want, even years after printing.
Feature-by-feature comparison
| Feature | Static | Dynamic |
|---|---|---|
| Destination changes after printing | No | Yes |
| Scan analytics | No | Yes |
| Requires hosting / subscription | No | Yes |
| Works offline forever | Yes | No |
| A/B testing | No | Yes |
| UTM tracking | Manual | Automatic |
| Expiration / retirement | No | Yes |
| Password or geo restrictions | No | Yes |
| Typical cost | Free | $9–$79/mo |
| Printed pattern changes | Yes — whenever target changes | Never — always the same |
When static wins
- WiFi credentials on a wallet card that lives forever
- Bitcoin / Lightning tip addresses where you don't want a redirect layer between the scanner and your wallet
- vCard on a physical monument or permanent installation
- Short text that is the actual content — a room number, a locker code, an inventory SKU
- Offline use cases where users may not have internet at scan time
Static codes are also free. No subscription, no server dependency, no privacy concerns. For a one-off use case like putting your personal vCard on a gravestone (yes, this is a thing), static is the only right answer.
When dynamic wins
- Any marketing campaign — so you can retire the code when the campaign ends
- Restaurant menus — so you can update prices without reprinting every table
- Event tickets — so you can issue and invalidate codes
- Packaging — so you can update the product page (or serial-number-to-batch lookup) without a label refresh
- Anything you want to measure — scan counts, geo, device, time-of-day
- Anything you might want to A/B test
- Compliance codes (DSCSA, DPP, FSMA) that must resolve to a live regulatory record
The decision framework
When you're not sure, run through these five questions:
- Will I ever want to change the destination? → If yes, dynamic.
- Do I need analytics? → If yes, dynamic.
- Is the code going on something I'd have to reprint / replace? (packaging, signage, menus) → Dynamic.
- Is this a campaign with an end date? → Dynamic.
- Will scans happen where there's no internet? → Static.
If you answered “no” to every question, static is fine. Otherwise dynamic is almost always worth the $9/month for the peace of mind.
The hidden gotcha: vendor lock-in
Dynamic QRs depend on the vendor's short-URL domain staying alive. If your provider goes bankrupt, changes domains, or boots you off the platform, every printed code stops working. Mitigations:
- Use a custom domain (available on QRMax Business+) so you own the DNS.
- Choose vendors with data portability guarantees. QRMax lets you export every redirect mapping as a CSV.
- For mission-critical or printed-at-scale deployments, negotiate a data-escrow clause in your enterprise contract.
Takeaway
Default to dynamic. It's more flexible, gives you analytics, and protects against future changes. Only fall back to static when you have a specific reason (offline use, permanence, or avoiding any dependency on a third party).
Ready to create one? Open the QR generator — we give you the static/dynamic choice on the very first screen.