Dynamic

Dynamic QR codes: how they work and when to use them

By Sam Moreton · updated 30 June 2026

A dynamic QR code looks identical to any other QR code, but it has one trick that makes it worth the trouble: you can change where it sends people after it is printed, and you can see how often it gets scanned. This guide is the practical version — what a dynamic code actually is, how to create and edit one in OpenQR, what the analytics show you, what it costs, and the honest answer to when you should use one versus a plain static code. If you only want the conceptual comparison, our static vs dynamic explainer covers that ground; this is the how-to.

8 min read · Updated 30 June 2026

What is a dynamic QR code?

A dynamic QR code does not encode your destination directly. Instead it encodes a short redirect link — in OpenQR that looks like oqr.to/your-name — and that link forwards anyone who scans it to wherever you have currently pointed the code. The destination lives in your account, not in the printed squares.

That single layer of indirection is the whole point. Because the printed code only ever holds the short link, you can swap the destination at any time without reprinting, and because every scan passes through the redirect first, each one can be counted. A static code, by contrast, bakes the real URL straight into the pattern — it never changes and can't be measured, but it also never depends on a server. We won't relitigate that trade-off here; the comparison guide does it properly. The short version:

  • Static — destination encoded in the code. Permanent, free, works offline, can't be edited or tracked.
  • Dynamic — destination encoded as a redirect link. Editable anytime, scans are tracked, but it depends on the redirect staying live.

How to tell which you've got

Decode any QR code with your phone's camera. If it shows your real link, it's static. If it shows a short redirect like oqr.to/abc, it's dynamic — and what it points at can be changed without touching the printed code.

How to make a dynamic QR code in OpenQR

Making one takes a couple of minutes. You need an account, because the destination has to be stored somewhere you can come back and edit — OpenQR uses a passwordless magic link, so there's no password to set.

From sign-in to a finished, editable code:

  1. 1

    Sign in with a magic link

    Enter your email and click the link we send. No password — the link logs you straight into your dashboard.

  2. 2

    Create a dynamic code

    Choose to create a dynamic code and paste the destination URL — the page, form, menu or video you want people to land on. You can change it later.

  3. 3

    Pick a custom back-half (optional)

    Set a readable short link like oqr.to/spring-menu instead of a random string. It's easier to recognise in your dashboard and prints more cleanly if the link is ever visible.

  4. 4

    Style and download

    Adjust colours, add a logo, and export as PNG, SVG or PDF. Print or place it wherever it needs to go.

  5. 5

    Edit and track from the dashboard

    Come back anytime to repoint the code at a new destination, or to see how many times it's been scanned. The printed code stays the same; only where it leads changes.

Editing is the feature you'll use most

Got a typo in the URL, moved a page, or want last month's poster to point somewhere new? Edit the destination in the dashboard and every printed copy follows instantly. Our guide to editing a QR code walks through exactly when this works and when it doesn't.

Make one with the API or MCP (for developers)

If you're creating codes in bulk or wiring them into your own product, you don't need the dashboard at all. OpenQR exposes a free REST API at /v1/dynamic for creating and updating dynamic codes programmatically, plus an MCP server so AI agents and assistants can do the same. Same engine as the dashboard — a dynamic code you make over the API behaves identically to one you click together by hand.

curl -X POST https://openqr.uk/v1/dynamic \
  -H "Authorization: Bearer oqr_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "destination": "https://example.com/spring-menu", "slug": "spring-menu" }'

Mint an API key in your dashboard, then create, edit and list codes from your own code. The full walkthrough is in our API getting-started guide, with deeper detail on the dynamic endpoints in the dynamic QR codes API article. Browse the reference on the API page.

What scan analytics you get

Because every scan resolves through the redirect, OpenQR can count it. In the dashboard you can see scans over time for each dynamic code — how many people scanned, and when — so you can tell which poster, table or campaign is actually pulling its weight.

How far back that history goes depends on your plan. The free tier keeps 7 days of scan history; Pro keeps the full history for the life of the code. Either way the counting itself is always on — the tier only changes how much of the past you can look at. For the detail on what's tracked and how to read it, see how to track QR code scans.

What it costs

OpenQR's generator, REST API and MCP server are free, and static codes are free and unlimited forever. Dynamic codes have a generous free tier and a flat paid plan when you outgrow it — no per-scan fees, no per-code surcharges.

FreePro
Dynamic codes10Unlimited
Scan history7 daysFull history
Edit destination anytimeYesYes
Custom oqr.to back-halfYesYes
REST API + MCPYesYes
Static codesUnlimited, freeUnlimited, free
Price£0£4/mo (£40/yr)

So you can run up to ten editable, trackable codes for nothing, with a week of analytics. Pro lifts the cap to unlimited and unlocks full scan history for £4 a month, or £40 a year. The full breakdown is on the pricing page.

When a dynamic code is worth it

Use a dynamic code when the destination might change, or when you need to measure scans. The test is simple: would a wrong or moved URL otherwise mean a reprint? If yes, the editability pays for itself the first time you use it.

  • Printed materials that might change — menus, posters, packaging, signage, leaflets. Repoint them instead of reprinting.
  • Campaigns you want to measure — compare scans across placements, see when interest peaks, kill what isn't working.
  • Anything already distributed at volume — a stack of business cards or a print run where a typo would otherwise be permanent.
  • Seasonal or rotating offers — one printed code that points at this month's promo, then next month's.

When is static the better call? One-off links that will never change, anything where you want maximum privacy (a static code is generated in your browser and phones home to no one), and codes you simply want to print once and forget. There's no shame in static — for a Wi-Fi code or a permanent website link it's the cleaner choice. If you're genuinely unsure, the comparison guide has a decision table.

A note on trust and longevity

The honest catch with any dynamic code is that it only works while its redirect stays live — that's true of every provider, and it's worth saying plainly. A redirect that gets switched off turns every printed copy into a dead end. People have been caught out by codes that stopped resolving after a trial lapsed or a vendor folded; we cover that risk in do QR codes expire?

Two things on our side of that bargain: OpenQR's core generator is open-source, and we don't expire working codes — a dynamic code keeps resolving as long as it's in use. You're never paying to keep a code merely alive; Pro is for scale and history, not ransom. And if dynamic ever feels like more than you need, a static code from the same tool is free and permanent by design.

Test before you print

Dynamic or static, scan the finished code with a few different phones before any print run — check it resolves to the right place, in normal and dim light, at the distance people will actually scan from. With a dynamic code there's a safety net (you can fix the destination after the fact), but you still want the code itself to read cleanly. Our testing guide and best-practices guide cover the checks worth doing.

Frequently asked questions

A QR code that encodes a short redirect link (in OpenQR, an oqr.to address) rather than the destination itself. Because the printed code only holds the link, you can change where it points at any time without reprinting, and every scan can be counted.
Create a dynamic QR codeSign in with a magic link — 10 free dynamic codes, editable anytime, with scan analytics.

Related reading