At a glance
| Static | Dynamic | |
|---|---|---|
| Editable after printing | No | Yes |
| Scan analytics | No | Yes |
| Works without any provider | Yes — forever | No — needs the redirect online |
| Cost | Free | Pro subscription |
| Right for permanent installations | Yes | No |
| Right for marketing & menus | Risky | Yes |
How they actually differ
A static QR code is exactly what it looks like — a picture of a URL. The destination is encoded into the pattern of the squares. Nothing on a server is involved when someone scans it; the scanner reads the URL and the phone opens it. That is why static codes never expire and never depend on a provider staying in business: there is no provider in the loop.
A dynamic QR code is a picture of a short URL — for example, something like qrz.in/abc123 — owned by the provider that issued the code. When someone scans it, their phone goes to the short URL, our server looks up the current destination for that code, and redirects them there. The destination is just a database row, and editing it is a single action.
How to choose
Two questions decide it. First: could the destination URL plausibly change in the lifetime of the printed surface? Menus, marketing landing pages, portfolio sites, event registrations, even your LinkedIn URL all change more than you expect. If yes, dynamic. Second: does the printed surface need to keep working even if the provider disappears? Gravestones, public monuments, museum plaques, certifications, tattoos. If yes, static.
Most real-world cases fall on the dynamic side. The exceptions are permanent installations and one-off personal projects where the link is already permanent (Wi-Fi network details, a vCard, a single specific article URL you trust will never move).
Migrating from static to dynamic
You cannot retrofit a printed static code into a dynamic one — the URL baked into the image is permanent. What you can do is replace the static URL's destination with a redirect of your own on your own domain, and then treat that as a poor-man's dynamic code. It works, but you are doing the provider's job. For most people the easier path is to print a real dynamic code from the start and never have to think about it again. See dynamic QR codes for the full pitch.