How to use it
- Drop a photo or screenshot of the code here, paste it with Ctrl+V (Cmd+V on Mac), or start the camera.
- Read the verdict: green means static or a direct link, red means a dynamic provider.
- If it's dynamic, open the link and copy the final address from your browser's address bar.
- Turn that address into a static code with the URL QR generator and replace the old one.
Why do QR codes stop working?
A QR code can't expire on its own: it's just a pattern that stores some text. An “expiring QR code” is really a dynamic code. It doesn't hold your website's address; it holds the provider's short link (say, qrco.de/abc123). When someone scans it, their phone goes to the provider's server, which forwards them to the real destination.
That's convenient, because you can change the destination later. The catch is that forwarding depends on the provider's server. When the free trial ends or you stop paying, the provider can stop forwarding, and every printed copy dies at once. Scanners land on an error page or an upsell. Plenty of “free” generators work this way, and it's the number-one complaint in the market.
A static code holds the destination directly. There's no server behind it for anyone to switch off.
What this checker looks for
We compare the scanned content against the short domains of known dynamic QR providers. We verified each one individually: either the domain's homepage forwards to the provider, or the domain's own page says it serves their dynamic codes.
| Provider | Domain inside the code |
|---|---|
| QR Code Generator PRO | qrco.de, l.ead.me |
| QR TIGER | qr1.be |
| ME-QR | me-qr.com |
| Flowcode | flowcode.com/p/…, flow.page |
| Uniqode (Beaconstac) | qrcodes.pro |
| QR.io | qr.io, qr.codes |
| QRfy, QR Planet, QRCodeChimp | qrfy.io, qrd.by, linko.page |
| Scanova, QR Stuff, uQR.me | scnv.io, qrs.ly, uqr.me |
We flag a service that has already shut down, too: from August 25, 2025, Google turned off Firebase Dynamic Links (page.link), so those codes no longer work. As for goo.gl short links, Google kept the ones still in use but switched off those that were inactive in late 2024, so we flag them as well. Generic link shorteners (bit.ly, tinyurl.com and the like) get a warning as well, since the code still depends on someone else's server.
Reading the result
- Green, “Static code”: the content (Wi-Fi, contact card, text, phone number, payment details) lives entirely inside the code. It never expires.
- Green, “points straight to…”: the link goes to a website, not through a known QR provider. It works for as long as that site is online.
- Amber, “link shortener”: not a QR provider, but the code depends on the shortener continuing to serve the link.
- Red, “Dynamic QR code”: the code runs through a provider's server and can be switched off without a subscription.
- Red, “no longer works”: the service has shut down.
What we can't rule out: if a company's own domain redirects somewhere else (a custom shortener, say), there's no way to see that from the outside. We don't open the link for you, because that would register a scan with the provider. If in doubt, open it yourself and see where you land.
Got a dynamic code? Here's how to get out
- Open the link in a browser while it still works.
- Copy the final address from the address bar (for example
https://myrestaurant.com/menu). - Make a static code from it with the URL QR code generator. Add your logo, colors and a frame if you like.
- Replace the printed copies over time, starting with the busiest locations.
If what you really wanted from a dynamic code was the ability to change the destination later, there's a free way to do that too: put a permanent address on your own domain in the static code (say, myrestaurant.com/qr/menu) and redirect it on your own hosting to wherever it needs to go. The code stays yours, and nobody can hold it hostage.
You can measure scans without a redirect service as well: the QR code UTM builder sends them straight to your own analytics (GA4, Plausible).
Privacy
Your browser processes the image. It's not uploaded, and the camera feed isn't recorded. We don't open the scanned link or send it anywhere: the check runs in your browser against a built-in domain list, so the dynamic provider never learns you checked.
The reader is the same one that powers our QR code scanner. It reads images, screenshots (paste with Ctrl+V), HEIC photos and your camera, and it warns about suspicious links too: raw IP addresses, look-alike domains, a username before the domain, and unencrypted http.
Frequently asked questions
Do QR codes expire?
Static codes never do. Dynamic codes can: if the provider stops forwarding (for example when a subscription or trial ends), the code stops working.
How can I tell if my QR code is dynamic?
Scan it here. If the link points to a known QR provider's short domain (qrco.de, qr1.be, me-qr.com…), you'll get a red warning.
My QR code stopped working. What now?
If your provider account still shows the destination, copy it from there. Make a static code from that address and reprint.
Do you open the link while checking?
No. We only compare the domain against our list, in your browser, so the provider never sees the check.
Do kitpebble QR codes expire?
No. We only make static codes: the content is inside the code, with no server or subscription behind it.
How complete is the list?
It covers the biggest providers' short domains and keeps growing. A domain that isn't on it can still redirect, so a green result for a link isn't a full guarantee.