Guides

How to change a QR code after it has been printed

7 min read

Yes — you can change where a printed QR code sends people, but only if it is a dynamic QR code. A dynamic code has a redirect in the middle: the pattern on the paper encodes a short link, and that link points wherever you tell it to. Change the destination and every copy already printed follows, usually within seconds. A static code has the destination baked into the pattern itself, so the only way to change it is to print a new one.

If you have already printed a static code, skip to what to do if your code is static. There is a way out, and it depends on who owns the domain you printed.

Why a printed code can be changed at all

A QR code is not a link. It is a picture of some text, and a scanner reads the text out of the pattern. Once ink is on paper, that text can never change — the pattern is the data.

The trick is what the text says.

A static code encodes your destination directly. Print birchbakeshop.com/menu/spring into the pattern and that is what every scanner will read, forever. Change your menu URL and the code is wrong.

A dynamic code encodes a short link owned by a QR service — qrosshatch.com/r/8k2mq4, say. When someone scans it, their phone opens that short link, the service looks up where it currently points, and sends them on with an HTTP redirect. The destination lives in a database, not in the ink, so you can change it whenever you want.

The printed code never changes. What changes is the answer it gets.

How to change a dynamic QR code's destination

The specifics vary by service, but the shape is always the same:

  1. Sign in and find the code you want to repoint.
  2. Edit its destination — the field is usually called the target or destination URL.
  3. Save.

That is the whole procedure. There is no re-encoding step and nothing to re-download, because the image is unchanged. In Qrosshatch, this is the Target URL field on a code's edit page; the change is live as soon as the save lands.

A few things worth knowing before you rely on it:

  • Propagation is fast but not always instant. The redirect itself updates immediately. What can lag is caching — a phone that scanned the code a moment ago may hold the previous destination briefly.
  • The old destination should keep working for a while. If you are moving from an old page to a new one, leave the old page up for a bit rather than deleting it the moment you repoint.
  • Test with an actual phone, not the preview in the dashboard. Scanning the printed piece is the only test that covers the whole path.

What to do if your code is already static

If the pattern already encodes your own domain, you are in good shape. You do not need to touch the QR code at all — you need to change what that URL does. Add a redirect at the printed path so anyone landing there is forwarded to the new destination. Any web host or CDN can do this, and a 301 is the right kind for a permanent move.

This works because the printed URL is yours. The code keeps pointing at the same address; you have changed what lives at that address.

If the printed pattern encodes a URL you do not control — a third-party shortener, someone else's domain, a page on a platform you have since left — there is no fix. The code will keep sending people wherever that URL goes, and you have no say over it. That is the case where a reprint is the only option.

The lesson generalises: never print a static code pointing at a domain you do not own.

Which one did I print?

If you still have the account you made it in, the service will say. If you do not, you can read it off the code itself. Scan it with any phone and look at the URL that comes up before you follow it:

  • A short, opaque URL on a QR service's domain — something like qrosshatch.com/r/8k2mq4 — is a dynamic code.
  • Your own full destination URL, spelled out, is a static code.

One caveat: some services put a branded domain in front of a dynamic code, so a URL on your own domain is not proof of a static code by itself. If it looks like a short random string rather than a real page path, it is a redirect.

The catch nobody mentions until later

Dynamic codes solve the reprint problem by introducing a dependency: your printed code now relies on a service staying up, and on your account with that service staying in good standing.

Most dynamic QR services are subscriptions. When the subscription lapses, the redirect stops resolving, and every code you printed — on menus, on packaging already in warehouses, on signage bolted to a wall — stops working. That is not an edge case, it is the normal end state of a free trial. We wrote about what actually happens when a QR subscription ends.

Before a large run, it is worth asking the service three questions:

  • What happens to codes I have already printed if I stop paying?
  • Is there an expiry date or a scan cap on the free tier?
  • How much notice do I get before the service changes or shuts down?

The answers are usually in the terms, and they are usually less generous than the marketing page.

Short version

  • A dynamic code can be repointed after printing, as many times as you like.
  • A static code cannot — unless it points at a domain you own, in which case you can redirect it at your own web host.
  • You cannot convert a printed static code into a dynamic one. The pattern is fixed.
  • If a code matters and the run is large, print a dynamic one, and check what happens to it if you stop paying.

Qrosshatch makes dynamic codes with no subscription attached — 100 per account, free, and codes you have already created are never charged for. Make one — the builder needs no account — or read the terms that back that up.