If you've shopped for a QR code generator, you've hit the split: static versus dynamic, with the "free" ones nudging you toward dynamic. The difference sounds technical but it comes down to one question — is your data in the code, or does the code just point at a link someone else controls? That single distinction decides whether your code is private and permanent, or convenient but on a leash.
What each one actually is

A static QR code has the data baked directly into the pattern. Encode https://example.com and the pattern is that URL. Scan it and the phone reads the URL straight out of the image — nothing in between. The code works forever, offline, with no server involved.
A dynamic QR code encodes a short redirect link owned by the QR service, like qr-svc.co/x7Ab. That link bounces the scanner to wherever you've currently set it to go. Because the destination lives on their server, you can change it after printing, and — this is the selling point — they can count every scan.
The trade-off nobody puts on the marketing page

Dynamic codes give you two real conveniences: edit the destination later, and see scan analytics. That genuinely matters for a printed campaign where the target URL might change, or a business that needs to know how many people scanned the poster.
But those features exist because every scan routes through their server. That has consequences:
- It can expire. "Free" dynamic codes are a hook. Plans change, free tiers get capped, companies fold. When the redirect service goes away, your printed code — on a thousand flyers — leads nowhere. A static code can't break this way because there's no middleman to fail.
- It tracks. Every scan hands the service a timestamp, a rough location, and a device type. Fine if you want the analytics; less fine if your customers didn't sign up to be logged by a third party they've never heard of.
- You don't own the link. The URL on your packaging belongs to the QR company, not you. If they raise prices, you pay or your code dies.
When each one makes sense
Reach for static when:
- The data doesn't change — a Wi-Fi password, a vCard, a fixed link to your own site.
- You want privacy — nobody, including you, needs scan analytics on a fridge Wi-Fi card.
- It has to last — a code carved into signage or printed in a book should still work in ten years.
- You already control the destination. If the code points at a URL you own, you can change what's at that URL anytime — no dynamic redirect needed.
A dynamic code earns its keep when you truly need to repoint a printed code to different destinations over time and can't just change your own page, or you're running a campaign where per-scan analytics drive real decisions — and you're willing to pay a reliable provider for it. Just go in knowing you're renting.
The privacy angle, plainly
This is where static quietly wins for most personal and small-business uses. A static code generated in your browser has no server in the loop at all — the data (including a Wi-Fi password) is encoded on your device and never uploaded. There's nothing to track because there's no redirect, and nothing to expire because there's no account. The "limitation" — you can't edit it later — is the same property that makes it private and permanent.
The pragmatic middle path
You can get most of the flexibility of a dynamic code without renting one: make a static code that points at a short, stable URL you control (your own domain, or a page you can edit). Need to change where it goes? Update your own page — the printed code never changes, but its destination does, and no third party sits in the middle counting scans. You keep the permanence and privacy of static, and the redirect stays in your hands.
For a Wi-Fi card, a business card's contact details, or a link to a page you own, generate it static, keep it, and don't hand a stranger the ability to switch it off.
