# How to change what a QR code points to

> A static QR code cannot be re-pointed: the modules literally are the encoded data. If the code contains a URL on a domain you control, change the server-side redirect and every printed code follows instantly. Otherwise your options are reprinting, or using a dynamic service on the next print run.

Source: https://useqr.app/docs/how-to/how-to-change-what-a-qr-code-points-to · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## Why the code itself can't change

A QR code is not a pointer into some registry: the black and white modules **are the
data**, encoded directly. Change one character of the payload and you get a visibly
different pattern. So "editing" a generated code is impossible by construction: what you
can change is not the code, but **what happens after the phone opens its contents**.

That distinction is the whole game. If the code contains
`https://example.com/menu` (a URL on a domain *you* control), then the code is frozen
but the destination is yours to change forever. If it contains someone else's URL, the
ink has made the decision for you.

## Your options, ranked

### 1. You control the domain: change the redirect

Best case, and it costs nothing. The printed code encodes a stable path on your domain;
your server decides where it goes:

```
Printed code:  https://example.com/qr/menu
Server today:  302 → https://menus.example.com/spring
Server later:  302 → https://menus.example.com/autumn
```

Every code ever printed follows the change instantly. This is the same pattern that
gives you [free scan tracking](/docs/how-to/how-to-track-qr-code-scans), and it is why
the standing advice on every print page here is: **encode your own domain, always**.
Even without a redirect, if the code points at a page you own you can change the page,
or rescue a retired one, per [QR code opens a 404](/docs/troubleshooting/qr-code-opens-a-404).

### 2. You don't control the destination: reprint

If the printed code points at a third-party URL (an old booking platform, a dead
partner page), no server you own can intervene. Reprinting is the honest fix, and for
stickers, table cards and small-format items it is cheaper than it feels, a one-off
cost against a recurring problem. What can and cannot be done to the physical object is
covered in [editing a code after printing](/docs/how-to/how-to-edit-a-qr-code-after-printing).

### 3. Next time, decide flexibility before printing

Dynamic QR services exist precisely to sell this changeability: the code points at
their domain, and a dashboard re-points it. That works, at the price of a subscription,
a third-party domain in your ink, and dependency on the provider's continued existence,
the full trade-off analysis is in
[static vs dynamic](/docs/basics/static-vs-dynamic-qr-codes) and
[should you use a dynamic QR code](/vs/should-you-use-a-dynamic-qr-code). Note the
structural point: **you cannot retrofit dynamic onto an already-printed static code**.
The flexibility decision is made at print time, every time.

## Decision table

| Situation | Best move |
|---|---|
| Code encodes a URL on your domain | Change the redirect or the page, done |
| Code encodes a third-party URL | Reprint with your own domain this time |
| Code encodes non-URL data (WiFi, vCard) | Reprint: there is no indirection to change |
| Not yet printed, destination will change often | Own-domain redirect, or a dynamic provider with eyes open |

One caution on the redirect pattern: it must stay alive. A redirect you decommission is
a broken code in the field, exactly like a
[shut-down QR service](/vs/what-happens-when-a-qr-service-shuts-down) in miniature.
Before any reprint, confirm the new payload in the [validator](/validate).

## FAQ

### Can I change the URL in a QR code after making it?
Not in the code itself: the pattern is the data. You change the destination by controlling what the encoded URL serves, which requires the URL to be on a domain you control.

### How do dynamic QR codes change their destination?
The code encodes a fixed URL on the provider's domain, and their server redirects each scan wherever the dashboard currently says. The code never changes; the redirect behind it does, which is also why the provider must stay in business.

### Can I make an existing printed code dynamic?
No. The printed code permanently encodes whatever URL it was generated with. Dynamic behaviour requires the code to have pointed at a redirecting domain from the start, so it can only be chosen before printing.

### What about QR codes that aren't links?
WiFi credentials, vCards and text payloads have no server in the loop at all, the scanning phone acts on the data directly. The only way to change them is to generate and print a new code.

## Try it

- https://useqr.app/url
- https://useqr.app/validate
