Static vs dynamic QR codes: which one do you actually need?
Most people pick the wrong type of QR code for their use case. Here's a 60-second decision framework based on what's actually going on under the hood.
- guide
- explainer
There are two kinds of QR codes, and they solve different problems. Picking the right one up front saves you from reprinting business cards or, worse, finding out a year later that your “free” QR has been quietly held hostage.
Direct, no middleman
- ✓ Never expires — no server in the loop
- ✓ Works even if every QR-as-a-service company shuts down
- — Destination is baked in; no analytics
Redirect through a server
- ✓ Editable destination, scan analytics
- ! Whoever runs the redirect can change or kill it
- — Useful when you'll need to update the link later
The 60-second version
Use a static QR if:
- The destination URL will never change.
- You’re encoding something that isn’t a URL (Wi-Fi credentials, contact card, plain text, payment string).
- You want the code to keep working even if every QR-as-a-service company on Earth disappears.
Use a dynamic QR if:
- The destination might change later (a campaign URL, a menu, a calendar link, a Linktree).
- You want scan analytics — counts over time, country breakdowns, device types.
- You want to print one code now and decide what it points to later.
That’s most of the decision right there. The rest is detail.
What “static” actually means
A static QR encodes your destination directly into the dots. Scanning it produces your URL with no middleman. The QR is essentially an image of a string.
Consequences:
- It never expires, because there’s nothing on a server that can be turned off.
- You can’t change where it points after printing — the destination is baked in.
- You get no analytics, because no one is in the middle to count anything.
- It’s printed in the exact same way regardless of vendor, so if your generator goes out of business, the existing codes don’t care.
Use cases that fit static perfectly:
- Wi-Fi QR codes on the wall of a coffee shop.
- vCard QRs on a business card.
- A link to a permanent page (your homepage, your
/about). - “Pay this address” QRs in payment apps.
- Anything you’d be annoyed to find depended on a third party still being alive.
What “dynamic” actually means
A dynamic QR encodes a short URL that lives on someone’s server. When scanned, that server looks up where to send the user and redirects them to the real destination. The dots on paper never change, but the destination can.
Consequences:
- You can update the destination after printing. Print a poster on Monday, change the link on Friday.
- You get analytics — every scan hits the redirect first, so it can be counted.
- You depend on whoever runs the redirect to keep running it. If they shut down, the codes break. If they decide to charge you to keep running it, you have a hostage situation.
Use cases that fit dynamic well:
- A campaign QR that needs to point at this week’s landing page.
- A restaurant menu that gets reorganized seasonally.
- A poster in 200 stores where reprinting would be a nightmare.
- Anywhere you genuinely want to know how many scans you got.
The “I want both” trap
A common mistake: picking dynamic for a use case that’s actually static, because the generator made dynamic the default and made it sound fancier (“editable!” “with analytics!”). Then your business card depends on a third-party redirect for the next decade.
Default to static unless you have a concrete reason you’ll need to change the destination. “I might want analytics someday” usually isn’t enough — once you’ve printed 500 cards, you’re not going to remake them just to wire up analytics.
How AFQR handles each one
- Static QRs on AFQR are generated entirely in your browser. We never see the URL you’re encoding. No account needed. The PNG/SVG you download is yours, the QR doesn’t depend on us in any way, and we couldn’t break it later if we wanted to.
- Dynamic QRs redirect through
afqr.codes. They need a free account so you can edit the destination and see scan stats. They don’t expire — no 14-day clock — and the redirect is the same for free accounts as it would be for any “premium” tier, because there isn’t one.
If you’re still not sure, the simplest test is: would I be furious if this code stopped working a year from now? If yes, go static. If you can replace the poster either way, dynamic is fine.
Need a QR code that won't expire?
Make one in your browser, free, no signup. Or sign in with Google to manage dynamic codes with scan stats.