One bakes the destination into the image forever. The other rents you a redirect you can change. Here is the real trade-off.
A static QR code stores the destination inside the pattern itself. A dynamic QR code stores a short redirect URL, and a server run by the vendor decides where that redirect points today. Everything else — cost, expiry, editing, analytics — follows from that one difference.
Choose static when the destination is settled and you want the code to keep working with no ongoing dependency and no bill. Choose dynamic when you genuinely need to change the destination after printing, or need scan numbers you will actually act on.
Neither is better in the abstract. A static code is a file you own; a dynamic code is a service you rent. Decide based on whether the destination is settled.
In a static code, the link, WiFi credentials or text you entered is encoded directly into the modules — the small light and dark squares. A scanner reads the pattern and has your data immediately. Nothing is looked up, so no server is involved once the image exists.
That is why the pattern gets denser as the data gets longer: a 30-character link needs fewer modules than a 200-character one. It is also why a static code cannot be edited. Changing the destination would mean redrawing the image, and the copies already printed do not redraw themselves.
A dynamic code encodes something short instead, such as https://ex.mp/7fQ2a. When someone scans it, their phone requests that address, the vendor's server looks up which destination the code currently points to, and sends a redirect. You change the destination by editing a record in the vendor's dashboard, not the artwork.
Because every scan passes through that server, the vendor can count it, timestamp it, and log coarse details such as country, city and device type. That is the entire basis of QR analytics — there is no other way to collect it. It also means the vendor sees your scanners before you do, and the code only works for as long as their server answers.
| Static | Dynamic | |
|---|---|---|
| What is encoded | The destination itself | A short redirect URL |
| Needs a server | No | Yes — the vendor's, permanently |
| Expires | Never | When the plan lapses or the vendor closes |
| Cost | Free, once | Usually a monthly or annual subscription |
| Edit destination after printing | No | Yes |
| Scan analytics | None | Counts, timestamps, rough location, device |
| Privacy | Nobody sits in the scan path | Vendor logs every scan |
| Pattern density | Grows with the length of your data | Always short and sparse |
| Works with no internet | Yes, for WiFi and contact data | No |
| Who controls it | You | The vendor |
The common disaster is a code that scanned perfectly in the print proof and shows an error page eighteen months later. It happens because many "free" generators quietly hand you a dynamic code: free to create, free for a 14-day trial, then dead unless you subscribe.
The artwork is not the problem. The pattern still decodes flawlessly. It just decodes to a redirect address that now returns "this code has expired" or a page selling you an upgrade. Every menu, label and flyer carrying it is wasted, and you cannot fix them without reprinting.
The same happens if the vendor shuts down, gets acquired, or retires the short domain it used — the redirect host stops resolving and the codes go with it. Printing a dynamic code at volume is a bet that one company stays in business and stays affordable. Sometimes that is a perfectly sensible bet. It should be a conscious one.
Before printing a dynamic code, ask what happens to it if you stop paying. If the answer is that it stops working, price the reprint into the decision.
There are real jobs a static code cannot do. If one of these describes you, buy a dynamic code and do not feel bad about it — this is exactly what the subscription is for.
For most everyday uses, static is not the budget option — it is the more durable one.
Point a static code at a URL you own, then change what that URL serves. A code pointing at yoursite.com/menu is permanently fixed on that address, but you decide whether the address shows the spring menu or the winter one. A redirect on your own domain works the same way and costs nothing extra.
That gives you the half of dynamic that usually matters — changing the destination — without renting anything from anyone. What it does not give you is scan counts. For a rough figure, your own site analytics will show visits to that page, and adding a query string such as ?src=tabletent separates QR traffic from ordinary visitors.
A static code aimed at a page you control is editable in every way that matters, and it still never expires.
QR Code Agent makes static codes only. Your data is encoded straight into the pattern, in your browser — nothing is uploaded, and no server sits between the printed code and the person scanning it. That is why there is no account, no subscription and no expiry date.
The limits, stated plainly: a code you download here cannot be edited afterwards, and there is no dashboard, because a static code does not report scans to anyone, including us. If you need editing or tracking, a paid dynamic service is the right tool for that job and this page is not going to pretend otherwise.
Free, no sign-up, and your code never expires.
Got your code? ☕ Buy me a coffee — it keeps this tool free for everyone.