Do QR Codes Expire? The Honest Answer for Static vs Dynamic

Static QR codes never expire. Dynamic ones can. Here is exactly why, and how to tell which kind you have before you print it on something.

Short answer: a static QR code does not expire, ever. A dynamic QR code can stop working the moment a subscription lapses or a provider shuts down. Which kind you have is the single most important thing to know before you print a code on anything permanent, and most people printing codes have no idea which kind they made.

Here is the honest breakdown, without the upsell that usually comes attached to this question.

Why static codes are permanent

A static QR code has the destination encoded directly into the black-and-white pattern. The URL is the pattern. When someone scans it, their phone reads the URL straight off the image and goes there. Nothing sits in between.

Because nothing sits in between, there is nothing to break, lapse, or charge you for. As one 2026 guide on the topic puts it, a static code works forever as long as its destination stays live, because the data lives in the pattern itself and has no expiry date of its own. The only ways a static code stops working are if the page it points to goes offline, or if the printed code is physically damaged. The code itself is permanent.

Why dynamic codes can expire

A dynamic QR code does not encode your destination. It encodes a short redirect URL that points to the provider’s server. Scan it, and your phone hits that server, which looks up where to send you and forwards you on.

That redirect layer is what makes dynamic codes useful. You can change the destination after printing, and you can track scans. But it is also exactly what can break. If your subscription ends, if you blow past a scan limit, or if the provider goes out of business, that middle server stops answering and every code routed through it dies at once.

This is not hypothetical. There are documented cases of people generating codes on a free platform, installing them out in the world, and finding two weeks later that the codes stopped working unless they started paying a monthly fee. The codes did not fail. The business model worked exactly as designed.

How to tell which kind you have

Look at what the code actually encodes. If you scan it and the raw content is your real destination (yoursite.com/menu), it is static. If the raw content is a short link on someone else’s domain (qrco.de/abc123), it is dynamic and depends on that someone else staying in business and staying paid.

If you generated it on a service that asked you to create an account and offered scan tracking, it is almost certainly dynamic. If you generated it from a tool that just handed you the image with no login, it is almost certainly static.

Which one you actually want

This is where most articles steer you toward a subscription, so here is the part they skip.

You want a static code when the destination will not change and you do not need scan analytics. A Wi-Fi password, a business card, a resume, a link to your homepage, a vCard. These should be static, free, and permanent. Paying a monthly fee to keep them alive is paying for a problem you do not have.

You want a dynamic code when you genuinely need to change the destination after printing, or when scan tracking is worth a recurring cost. A poster you will repoint to next season’s campaign, packaging that outlives a single promotion, anything where the analytics drive real decisions.

The mistake is defaulting to dynamic because it sounds more capable. For most personal and one-off uses, dynamic is a subscription you will eventually forget to pay, attached to a code you needed to last forever.

The takeaway

If you are printing something that needs to work years from now and the link will not change, make a static code. It costs nothing and it cannot expire. Save dynamic codes for the specific cases where editability or tracking actually earns its keep.

QR Forge generates permanent static QR codes with no account, no subscription, and no expiration, so the code you print today still works whenever someone scans it.