How to Make a Free QR Code That Doesn't Expire
2026-05-27
Short answer: Make a static QR code — one that encodes your link directly, with no middleman server — and it will work forever. ToolKoala's QR code generator does exactly that, in your browser, with nothing uploaded. The QR codes that "expire" are dynamic codes that quietly redirect through someone else's server, and that server is what dies (or starts charging) later.
Static vs dynamic: the trap nobody explains
There are two kinds of QR codes, and the difference decides whether yours survives:
- Static — the URL is baked directly into the pattern. Scan it, go straight to your link. No server in the middle, nothing to expire, nobody tracking the scan.
- Dynamic — the QR encodes a short redirect URL on the generator's domain (something like
qr.somecompany.com/abc123). When someone scans, they hit that company's server first, which then forwards them on.
Dynamic codes are sold as a feature ("edit your link later! see scan analytics!"), and sometimes that's genuinely useful. But the catch is brutal: the moment that company shuts down, changes its pricing, or moves you off the free plan, every code you printed stops working. I've seen menus, business cards, and event flyers go dead because the redirect behind them got switched off. The pattern on the paper is fine — the server it points to is gone.
A static code has no server to lose. The downside is honest: you can't change where it points after you've made it. If the link changes, you make a new code. For most things — a Wi-Fi password, a menu PDF, a contact card, a fixed website — that's a fair trade.
How to make a static QR that lasts
- Open ToolKoala's QR code generator.
- Paste the final URL — the real destination, not a shortener you might lose access to.
- Bump the error-correction level to Q or H if it'll be printed (more on that below).
- Download the PNG/SVG. That image is yours forever; no account, no expiry, no scan tracking.
It runs locally in your browser — open DevTools and watch the Network tab if you want to confirm nothing about your link is sent anywhere.
Printing tips so it actually scans
A QR code that won't scan is just an ugly square. From the codes I've had to reprint:
- Error correction: levels Q (25%) or H (30%) let the code survive smudges, folds, and a logo dropped in the center.
- Contrast: dark code on a light background. Avoid light-on-dark and busy photo backgrounds — scanners hate them.
- Minimum size: at least 2 × 2 cm (about 0.8 inch) for a card; bigger for posters scanned from a distance. Rough rule: scan distance ÷ 10 = minimum width.
- Quiet zone: leave clear white margin around it. Don't crop tight.
Honest alternatives
- QRCode Monkey — free, makes static codes, lots of styling. Good if you want a logo in the middle.
- The paid dynamic services (Beaconstac, QR Code Generator PRO, ~$5–15/month) — worth it only if you genuinely need editable links or scan analytics, and you're prepared to keep paying so they don't die.
- Command line:
qrencode -o out.png "https://example.com"if you live in a terminal.
If you don't need analytics, skip the subscription. Static is the safe default.
FAQ
Do QR codes expire? Static ones never do — the link is in the pattern itself. "Expiring" QR codes are dynamic ones that route through a company's server, and that server is what expires.
Can someone track who scans my QR code? Not with a static code — there's no middleman to log scans. Dynamic codes can track every scan, which is sometimes the point and sometimes a privacy problem.
Can I edit a static QR code after printing it? No. If the destination changes, generate a new code. That's the trade-off for it never depending on a server.
Is ToolKoala's QR generator really free with no limits? Yes. It runs in your browser, makes static codes, and there's no account, watermark, or scan cap.
— Milo 🐨