QR Code Generator
A QR code whose destination you can change after printing — via a redirect you own. Free, no subscription.

Not encoded in the QR code — only used in the setup instructions below.

Your QR code will appear here

How dynamic QR codes work

The code encodes a URL you own, and that URL redirects to the real destination. Change the redirect whenever you like — the printed code never changes. This is exactly what paid QR services sell; with your own domain it's a redirect rule you control.

  1. Pick a URL on a domain you own, e.g. qr.your-domain.com/launch or your-domain.com/go/launch.
  2. Point it at your destination with a temporary redirect (302/307) — never 301: permanent redirects get cached by browsers and scanners, freezing your "dynamic" code forever.
  3. Make sure the redirect host serves valid HTTPS (any modern host or Cloudflare does this automatically) — that's what keeps phones from showing a warning on scan.
  4. Want scan counts? Add UTM parameters to the redirect destination (e.g. ?utm_source=qr&utm_campaign=launch) — your analytics will attribute each code separately, and the printed code stays unchanged. Camera apps send no referrer, so without UTMs scans look like direct traffic.
  5. Generate and print the code above. To repoint it later, edit the redirect — nothing else.

Don't want to configure redirects by hand? Copy this prompt — it has your URLs filled in — and paste it to your AI assistant:

Set up a dynamic QR redirect for me.

Goal: https://qr.your-domain.com/launch should HTTP-redirect to <destination URL>. A printed QR code points at https://qr.your-domain.com/launch, so that URL must never change — but I need to be able to change where it forwards to later.

Requirements:
- Use a TEMPORARY redirect (302 or 307), NOT 301. Permanent redirects get cached by browsers and QR scanners, which would freeze the destination and defeat the purpose.
- qr.your-domain.com must serve valid HTTPS so phones don't show a security warning when the code is scanned.
- If DNS for the (sub)domain doesn't exist yet, create it as part of this.
- Append UTM parameters to the redirect DESTINATION (not the redirect URL itself) so my analytics can attribute scans, e.g. ?utm_source=<redirect-domain>&utm_medium=qr&utm_campaign=<slug>. Keep source/medium identical across codes; make utm_campaign the per-code slug.
- When you're done, show me exactly where the destination is configured so I can change it myself next time.

My stack: <tell your AI where this domain's DNS/hosting lives — e.g. Cloudflare, Vercel, Netlify, nginx on a VPS>