How Do I Change Where a QR Code Goes After It Is Printed?
Dynamic code: edit the destination in the generator's dashboard. Static code: the pattern is fixed, so add a 301 redirect on the URL it already contains.
If the code is dynamic, log in to the generator that made it, edit the destination URL, save, and scan it to check. If it is static, the printed pattern can’t change, but the web address inside it can: add a permanent (301) redirect on your own website or domain from that address to the new page, and every scan will follow it. Either way you don’t reprint, as long as you control the link the code contains.
What you need first
Find out which kind of code you printed and who owns the link inside it. That decides which fix you can use. The full difference between the two types is in our dynamic vs static QR code guide; here is the short test.
- Scan the printed code with your phone camera, and read the link it previews before you tap.
- A generator’s short domain means the code is dynamic. You need the login for that generator.
- Your own website’s full address, such as
https://yourcafe.com/menu-summer, means a static code, or a dynamic code on a custom domain. You need access to the website’s hosting, CMS or server settings. - Someone else’s short domain, with no account of yours behind it, is a dead end. Neither fix works without the owner.
If you’d rather not point a camera at it, our QR validator shows the decoded link and also flags low contrast and hijacked links.
How to change a dynamic QR code
A dynamic code holds a short link. The generator’s server looks up where that link should go each time someone scans it, so you change the lookup, not the print. QRAnalytica’s dynamic redirects work this way: you can change the target URL at any time without reprinting the code. Other dashboards look much the same.
- Sign in to the generator and open the code. Match it by name, or by the short link you saw when you scanned.
- Find the destination or target URL field. Paste the new address in full, including
https://. - Don’t touch the short link itself (often called the slug or the code ID). That part is what’s printed. Change it and the printed code points to a link that no longer exists.
- Save, then scan the printed copy, not the preview on your screen.
Say a restaurant moves its menu to a new page during a site redesign. With a dynamic code, that’s a one-field edit, and the table cards stay on the tables.
How to redirect a static QR code
A static code holds the final address itself, so the only place left to change anything is the server that answers that address. If it’s your site, send visitors from there to the new page.
Google Search Central explains that 301 and 308 mean a page has permanently moved, and recommends a permanent server-side redirect whenever possible. MDN describes what happens on the phone: when a browser gets a 301, it automatically requests the URL in the Location header and the visitor lands on the new page. The person scanning sees nothing but a slightly longer load.
- Write down the exact path in the code, for example
/menu-summer. Spelling and the trailing slash matter. - Add a permanent redirect from that path to the new page. Where you do this depends on your host:
- Apache: Google names the
.htaccessfile as one place to set it. MDN’s guide to HTTP redirections notes that Apache’s plainRedirectdirective makes a 302 by default, so state the 301 explicitly. - Nginx: MDN’s example uses a line of the form
return 301 $scheme://www.example.com$request_uri;inside the server block. - WordPress, Shopify, Squarespace and similar: look for a “redirects” or “URL redirects” setting. You won’t need server access.
- Apache: Google names the
- Keep the old address answering with the redirect for as long as the print is out there. MDN says permanent redirects “are meant to last forever.”
If the code contains a form submission rather than a page, use a 308 instead. MDN notes that some browsers turn a POST into a GET after a 301, and that 308 prevents it. For a menu, flyer or poster, 301 is fine.
Permanent or temporary?
If the change is for a weekend, such as pointing a poster at an event page and back again, a temporary redirect fits better. Google lists 302 and 307 as the temporary codes.
How to check the change worked
- Scan the printed code on your own phone and confirm the new page loads.
- Scan it again on a second phone, or open the link in a private browser tab, on mobile data instead of your Wi-Fi.
- For a static redirect, check the response from a computer. Running
curl -I https://yourcafe.com/menu-summershould show301and alocation:line with the new address. RFC 9110 says the server should send a Location header with the new permanent address, so a 301 without one is broken. - If the code uses UTM tags, check the new page still receives them in your analytics.
What goes wrong
Caching. A 301 is permanent, and the HTTP standard says a 301 response is heuristically cacheable unless cache controls say otherwise. A phone that scanned the code during testing may keep going to whatever the redirect said first. That’s why step 2 above uses a different device. It’s also why you shouldn’t put a 301 in place “for now”: if you might point the address somewhere else next month, use a 302 or 307.
The old page was deleted, not redirected. This is the most common failure. Someone rebuilds the website, the old menu page disappears, and every printed code lands on “page not found.” Static and dynamic codes both break this way. We cover the other reasons codes stop in do QR codes expire. Before any redesign, list every address that appears on print and add a redirect for each one.
Redirect loops. If the new page redirects back to the old one, nothing loads. MDN warns that loops “completely break the user experience,” and Firefox shows “Firefox has detected that the server is redirecting the request for this address in a way that will never terminate.” Check that the new page doesn’t have a redirect of its own pointing back.
The short domain isn’t yours. A static code that contains someone else’s short link can’t be redirected from your server, because the scan never reaches your server first. Only that service can change it. The same goes for a dynamic code when you’ve lost the generator login.
The code doesn’t scan at all. That’s not a destination problem. Damage, contrast or size is the cause, and our guide to QR codes that won’t scan covers the fixes.
My take: put a domain you own in the code
Decide this before printing. If the link in the code is on a domain you control, you can always fix the destination, through a dashboard or a redirect on your own server. If it’s on someone else’s domain, you’re stuck with whatever they allow. We recommend branded short links on your own domain for anything printed in volume. QRAnalytica lets you connect a domain like brand.link/summer-sale to your dynamic codes.
The limitation
A dynamic code still depends on a redirect server, and that includes QRAnalytica: our dynamic codes run through our redirect servers, which is what makes editing and scan counts possible. We don’t switch codes off when a subscription or trial ends; the account drops to the free plan and printed codes keep working. If you need a code that works with no company in between, use a static code on your own site and maintain the redirects yourself. That work falls on whoever runs the website. When the person who knew about the redirects leaves, the next redesign breaks the codes.
FAQ
Can I change a static QR code after printing?
Not the code itself. The link is stored in the printed pattern. If that link is on a website or domain you control, you can add a permanent redirect from it to the new page, and every scan follows the redirect.
How do I know if my QR code is static or dynamic?
Scan it and read the link your phone previews. If it is a generator’s short domain, or there is an account where the code shows up with an editable link, it is dynamic. If it is your own website’s full address and no dashboard lists it, treat it as static.
I changed the destination but my phone still opens the old page. Why?
A permanent redirect can be cached. Test on a second phone, in a private browser tab or on mobile data. If the new page loads there, the change worked and the old result was cached on your device.
What if the static code points to a short link I don’t own?
Then only the owner of that short domain can change where it goes. If that service lets you edit the link, do it there. If not, the printed code can’t be redirected, and the fix is a new code on a domain you control.