QR code redirects: best practices (301 vs 302, UTMs, and avoiding broken scans)
A "dynamic QR code" is just a QR code that points to a URL you control, and that URL redirects to the real destination.
That redirect is a gift because it lets you:
- change the destination later
- add tracking
- fix mistakes without reprinting
It is also a risk.
If you implement redirects poorly, you can create:
- slow loads after scanning
- broken destinations that you do not notice
- tracking that lies
This post shows the redirect rules that keep dynamic QR codes reliable.
If you want the dynamic QR basics first:
- /blog/dynamic-qr-code
- /blog/dynamic-vs-static-qr-code
TL;DR
- Dynamic QR codes are usually redirect links.
- Prefer 302 while a campaign is active and you might change the destination.
- Use 301 only when the destination is truly permanent.
- Preserve UTM parameters for campaign measurement.
- Avoid long redirect chains and avoid taking people through 4 tracking tools.
- Test on iPhone and Android, with cellular, not only your office WiFi.
Why redirects matter for QR codes
A QR code scan is a high intent click.
People scan because:
- they are in front of a menu
- they want a discount
- they want to leave a review
- they want to download an app
If the redirect is slow, you lose conversion.
If the redirect breaks, you lose the whole print run.
301 vs 302 for dynamic QR codes
These are HTTP status codes that tell a browser what kind of redirect it is.
301: permanent redirect
A 301 tells browsers and crawlers that the move is permanent.
That can be useful for SEO, but for QR codes it has a downside:
- some clients may cache it aggressively
If you later change the destination, some users might keep going to the old place.
302: temporary redirect
A 302 tells clients the move can change.
For dynamic QR codes, that is often what you want because:
- you expect to edit the destination
- you might run A/B tests
- you might switch offers
Practical advice:
- Use 302 by default for dynamic QR codes.
- Switch to 301 only if you are confident you will not change it again.
Redirect chains: the silent conversion killer
A redirect chain looks like this:
- QR code short link
- tracking platform redirect
- link shortener redirect
- landing page redirect to add https
- landing page redirect to add trailing slash
That is five separate requests.
On a phone, on cellular, that can feel like forever.
How to fix it
- keep it to one redirect if possible
- make the final destination URL correct (https, no unnecessary hops)
- avoid stacking multiple tracking tools
If you care about scan to page speed, read:
- /blog/landing-page-speed-for-scans
UTMs: how to track QR scans without breaking links
If you want campaign tracking, you need UTMs.
Start here:
- /blog/qr-code-campaign-tracking-utm
UTM best practices for QR
- Keep the UTM tags consistent across print pieces.
- Use a naming convention you can filter in analytics.
Example:
- utm_source=qr
- utm_medium=print
- utm_campaign=spring-menu
Do not strip query parameters
A common redirect bug is dropping the query string.
If your redirect does not preserve the query parameters, your UTMs disappear.
That is how you end up thinking a print campaign did not work.
The "dynamic QR broke after printing" failure mode
This happens when:
- the short link domain changes
- the redirect service expires
- someone changes the destination and does not notice it is broken
Prevention checklist
- Use a stable domain you control.
- Monitor the QR destination.
- Do not rely on a free link shortener for printed materials.
Testing: do not test like an engineer
Engineers test on perfect WiFi with a new iPhone.
Your customers:
- use older phones
- have low signal
- scan in bright light
- scan while walking
So test like a customer:
- scan on iPhone and Android
- scan with cellular
- scan from different distances
QR redirects and analytics: what should you measure?
The core funnel is:
- scans
- landing page views
- conversion
A redirect based dynamic QR can report scans, but it cannot tell you the full story without a good landing page.
Good landing page basics:
- fast load
- clear CTA
- form fields that fit on mobile
If you are collecting leads, this is relevant:
- /blog/qr-code-lead-capture-form
Make your QR code editable, trackable, and fast
QRShuffle is built for the practical use case:
- generate dynamic QR codes
- edit destinations anytime
- track scans
- keep links reliable for print
Create a dynamic QR code in minutes:
