Why QR destinations die, and how to tell
A QR code almost never dies; the thing behind it does. The most common cause is embarrassingly ordinary: a campaign page is taken down, a product slug changes, a ticketing platform retires an event, or a short link is deleted in a tidy-up. Because the printed code cannot change, every poster, package, and business card carrying it quietly becomes a dead end. The fix is organisational, not technical: someone must own each destination, know when it ends, and retire it deliberately.
The first distinction to make is between a static and a dynamic code. A static code has the destination baked into its pattern; if the page moves, the code is wrong and only reprinting fixes it. A dynamic code points at a redirect you control, so you can change the destination behind the printed pattern. Dynamic codes cost you a redirect service to maintain, but they are the only sane choice for anything with a lifespan — campaigns, events, menus, tickets. If you print static codes for temporary things, you are scheduling future dead ends.
The second distinction is between expiry and reachability. Expiry is a fact about your own plan: the campaign ended on this date, the ticket was valid until that date. Only you can state it, which is why this tool asks you for the date instead of guessing. Reachability is a fact about the network: does the destination answer? A browser page like this one can attempt a fetch, but cross-origin rules mean many destinations will refuse to be read, and the browser will not reveal intermediate redirect hops. A failed fetch from this page is therefore an unknown, and this tool labels it as such rather than dressing it up as a verdict.
For a conclusive reachability answer, use a tool that is allowed to see the full picture: open the link in your browser and watch the address bar, issue a redirect-following request from a terminal and read each status code, or rely on a monitoring service that checks your destinations on a schedule. If the destination is yours, your own server logs and redirect rules are the fastest source of truth — a changed slug or a retired campaign shows up there immediately.
Finally, retire codes with the same care you used to launch them. Point a retired redirect at a short page that says the campaign ended and where to go next, rather than leaving a bare error. Remove codes from circulation where you can, and keep a register of every live code, its destination, its owner, and its end date. A register turns expiry from a surprise into a scheduled task — and a QR programme with a register is one whose codes keep working.
