Dynamic QR code

A dynamic QR code encodes a short redirect URL instead of the final destination, so you can change where it points after it's printed.

A dynamic code doesn't carry your real link. It carries a short URL that runs through a redirect service, and that service decides where each scan lands. Because the printed pattern only ever points at the redirect, you can swap the destination as often as you like and the code on the wall never changes.

The redirect is also what makes scan analytics possible: every scan passes through a server that can log it. TangoQR makes every code dynamic, free or paid. It's the whole product, not an upsell. Print once, repoint forever.

How a dynamic QR code works, one scan at a time

Six things happen between the camera and the page. Only steps four and five are unusual, and they are the entire difference.

  1. The generator mints a token, not a link. TangoQR creates a random 8-character token and builds one URL from it: https://tgo.sh/K3v9Rt2A. That URL is 23 characters long whatever your destination is.
  2. The pattern encodes the short URL. Your destination never enters the image. Decode a printed TangoQR code with any scanner app and what comes back is tgo.sh/K3v9Rt2A, which is why the same picture can serve a different page next month.
  3. The phone requests that URL. The camera decodes it and opens it like any other link. Nothing special is needed on the scanner's side.
  4. The server resolves the token and records the scan. One lookup finds the row holding that token's current destination, and one insert writes the scan event: timestamp, two-letter country code, user agent, IP.
  5. It answers 302 Found with a Location header. A 302 rather than a 301 is deliberate: browsers cache a 301 hard, so a repointed code would keep sending repeat scanners to the destination you just replaced. The response also carries Cache-Control: private, no-store, so no cache swallows a scan before it is counted.
  6. The phone follows the Location header. Cost of the detour: one HTTP round trip, in front of a page load that takes far longer.

A static code has no middle box. The phone reads your destination straight off the print and goes there, so there is no lookup to steer and no request to count.

The same square, two different machines

Both kinds are ink on paper and neither looks unusual to a scanner. The whole difference is in what the modules spell out and what, if anything, answers when a phone reads them. For the commercial trade-offs rather than the machinery, see dynamic QR codes.

Static QR code Dynamic QR code
What a decoder reads out Your destination URL, character for character A host and an 8-character token: tgo.sh/K3v9Rt2A
Where the destination lives In the printed pattern itself In a database row the token resolves to
What a scan touches Nothing. Camera to your page One lookup, one logged row, one 302
What a new destination costs A new pattern, so a new print run One save; the printed pattern is untouched
What has to stay up Your destination URL Your destination URL and the redirect

Both kinds are made on this site: static codes by the free generator, which runs entirely in your browser, and dynamic codes by the builder on the home page.

What actually changes when you repoint one

Say you print 40 table tents carrying https://tgo.sh/K3v9Rt2A. Through spring that token resolves to the spring menu. In June you open the code in your dashboard, paste the summer menu and save. Here is the whole difference, as the scanner's phone sees it:

scan in May   GET https://tgo.sh/K3v9Rt2A
              302 Found · Location: https://example.com/menu-spring.pdf

scan in June  GET https://tgo.sh/K3v9Rt2A
              302 Found · Location: https://example.com/menu-summer.pdf

Same token, same eight characters, same image file byte for byte. TangoQR renders a code's image from its short URL and never from the destination, so repointing cannot alter the pattern sitting on the table. The token resolves at tangoqr.com/r/K3v9Rt2A as well, so a code printed before the short domain existed keeps working too.

Now the static version of the same tent, encoding https://example.com/menu-spring.pdf. Those 35 characters are the pattern. Swap spring for summer and you have different data, a different pattern, a different image, and 40 table tents to reprint.

Questions people ask next

Can I change a dynamic QR code after it's printed?

Yes, and that is the definition rather than a feature. Because the pattern encodes the redirect URL, the destination sits in a database row you control. Open the code in your dashboard, paste the new URL, save, and the next scan of every printed copy lands there. On the TangoQR free plan a code stays editable through its first 50 scans; past that, editing that particular code needs Pro ($10/mo or $100/yr). Either way the code keeps redirecting. Longer version: can I change a QR code after printing.

Do dynamic QR codes expire?

The pattern cannot expire. It is encoded data, and the math does not lapse. What can lapse is the redirect behind it, and that is a property of the provider rather than of the technology. TangoQR codes carry no expiry date and no time window: there is no scheduled shutoff to set, and nothing switches a code off when you stop paying. The one thing that stops a code here is an abuse suspension (spam, malware, phishing, copyright), which answers 410 Gone instead of forwarding. On any other service, ask what happens to printed codes when a trial or subscription ends, and ask before you print. See do QR codes expire.

Are dynamic QR codes free?

Here, yes. Every TangoQR code is a dynamic redirect on the free plan: unlimited codes, no code caps, $0. Free codes wear a small tangoqr wordmark in the bottom-right corner of the image, and a code's destination editing and detailed analytics lock once it passes 50 lifetime scans. Pro ($10/mo, or $100/yr) drops the wordmark and the per-code limit; the full split is on the pricing page. Elsewhere, "free QR code" often means a static image, so check which kind a tool actually hands you before the print run.

What analytics does a dynamic QR code give you?

Whatever the redirect can observe on the way past, which is more than people expect and less than they fear. TangoQR stores one row per scan: timestamp, two-letter country code, user-agent string, IP address. The per-code page turns those rows into total scans, unique devices (distinct IP and user-agent pairs), top country, the time of the last scan, and four charts: scans per day across the last 30 days, scans by country, scans by device class (mobile, desktop, tablet, bot, unknown), and scans by hour of day in UTC. No names, no street-level location, no way to tie a scan to a person. Collection never depends on the plan, so upgrading shows a code's whole history rather than only the scans since you paid. What those numbers do and do not mean is unpacked in QR code tracking and scan analytics.

How do you create a dynamic QR code?

Paste your destination into the builder on the home page. It mints the token, encodes the short URL and renders the code right there. There is no account to create, though an anonymous create can ask for an email address to send the code to. Download the PNG for screens, or the SVG for anything printing larger than a coaster, since vector edges never blur. Then sign in to keep the code in your dashboard, which is where repointing lives. Already holding a printed code and unsure which kind it is? The analytics checker decodes an image and tells you whether it routes through a redirect.

Related terms

See also

Make a QR code you can change later

Every TangoQR code is an editable redirect, free to start. Print once, repoint forever.

Make your first code, free

← All glossary terms