When you create a new code, qrody asks you: Dynamic or Static? The answer depends on how and how long the code is in use.
TL;DR
| Dynamic | Static | |
|---|---|---|
| Change the target URL later | Yes, any time | No, you need to print a new code |
| Scan analytics | Yes | No |
| Password / expiry (Pro) | Yes | No |
| Works without qrody's servers | No, the redirect runs through us | Yes, the code is self-contained |
| Best for | Web, print campaigns, event flyers | Engraving, tattoo, packaging, business cards |
Why Dynamic is the default
The code points at a short redirect (https://qrody.com/r/ab12cd). The actual target changes whenever you edit it in the dashboard — the printed code stays the same. In 9 out of 10 cases this is the right call, because requirements shift: a campaign URL gets a different landing page, a restaurant menu changes seasonally, an event site moves to a new domain.
Uptime promise: As long as qrody runs, your dynamic code keeps working. We operate the redirect with the same SLO as our main site — and announce planned maintenance proactively.
When Static is the right pick
Static encodes the target directly into the QR matrix. No redirect, no service in the middle — the code works in 20 years even if qrody no longer exists. The trade-off: the target URL is fixed. If it needs to change, you need a brand-new code with a fresh print run.
Static is the right pick when:
- You fix the code physically forever (engraving on stainless steel, tattoo, packaging print).
- You want zero third-party dependency (on us), e.g. for an emergency hotline or a hotel-room WiFi card meant to stay stable for decades.
- The target URL truly will never change — a PGP public key, a geo coordinate, etc.
What about Tier 1 (Free)?
Free accounts can create unlimited static codes. Dynamic ships with Tier 2 (Starter) and above — if you try to create a dynamic code on Free, qrody shows you the upgrade path with the concrete limit hint.
Can I switch later?
Static → Dynamic is possible (see Convert a static code to dynamic). The printed static code keeps pointing at the old URL though — the new dynamic code is a different matrix. If you suspect the URL might ever change, start with Dynamic.
Dynamic → Static does not exist: if you want to print a dynamic code permanently without the redirect, create a fresh static code with the same target URL.