Static vs Dynamic QR Codes: How to Make a QR Code That Never Expires
Why so many QR codes stop working after a free trial, the difference between static and dynamic codes, and how to create and print a QR code that will work for years.
A restaurant prints 500 menus with a QR code. Three months later, guests scan it and land on a page asking the owner to “upgrade to keep your QR code active”. This happens constantly, and it is completely avoidable once you understand the difference between static and dynamic QR codes.
Static QR codes: the data is in the pattern
A QR code is just a way of writing text as black and white squares. In a static code, that text is your actual content: the full web address, phone number or Wi-Fi password. When someone scans it, their phone reads the text directly. No server is involved.
That means a static QR code:
- never expires and has no scan limits,
- works even if the website that generated it disappears,
- cannot be changed after printing,
- cannot be tracked, because nobody sees the scans.
Dynamic QR codes: a redirect in disguise
A dynamic code contains a short link to the provider’s server, something like qr-service.example/a8F3k. When scanned, the server redirects the visitor to your real address. This lets you change the destination later and count scans, which is useful for marketing campaigns.
The downside is dependence. If the subscription ends, the provider changes its pricing, or the company shuts down, every printed code stops working. Many “free QR code generators” quietly create dynamic codes so that customers are locked in.
How to tell which one you have
Scan your code with the phone camera and look at the address shown before opening it. If it is your own domain or your actual content, the code is static. If it is the generator’s domain or an unfamiliar short link, it is dynamic, and it will only work as long as that service wants it to.
When dynamic codes are worth it
Dynamic codes make sense if you genuinely need to change the target after printing, or need scan statistics for a campaign. If you do, our advice is to point the QR code at your own short link, such as yourdomain.com/menu, and set up the redirect on your own website. You keep full control and can still change the destination. With analytics on your site, you also see the visits.
How to create a QR code that lasts
- Open QR Code Generator and paste your link or text.
- Keep the content short. Shorter text creates fewer, bigger squares that scan more easily. Prefer
yourdomain.com/menuover a long address full of tracking parameters. - Choose error correction. Medium is a good default; choose High or Highest if the code will be printed on something that gets dirty or worn, like a sticker on equipment.
- Download SVG for print and PNG for screens.
- Test the printed proof with two different phones before printing the whole run.
Printing rules that prevent problems
- Size: at least 2 × 2 cm for a code read at arm’s length. A common rule of thumb is that the scanning distance should be no more than about ten times the code width.
- Quiet zone: keep a white margin around the code, ideally four modules wide. Codes squeezed against other graphics often fail.
- Contrast: dark code on a light background. Inverted codes (light on dark) and low-contrast brand colors fail on many phones.
- Surface: avoid glossy laminate in bright light and curved surfaces like bottles for small codes.
Useful content types
- Website:
https://yourdomain.com/page - Phone call:
tel:+441234567890 - Email:
mailto:hello@yourdomain.com - Wi-Fi network:
WIFI:T:WPA;S:NetworkName;P:password;;
If your link contains spaces or special characters, encode it first with URL Encode, or better, use a clean address without them.
Our take
For menus, business cards, posters and packaging, use static codes pointing to your own domain. They are free forever, cannot be held hostage, and if you need flexibility, you can change what lives at that address on your own website. Pay for dynamic codes only when scan analytics are worth a monthly fee, and even then read the cancellation terms first.