Dynamic vs Static QR Codes: Which Ones You Can Edit and Track

SIsivaguru·
Dynamic vs Static QR Codes: Which Ones You Can Edit and Track

A static QR code holds the destination itself, so once it's printed you can't change where it goes or count its scans. A dynamic QR code holds a short link that redirects, so you can change the destination after printing and see every scan. Most QR tools cap or charge for dynamic codes; LotsLink's are free and unlimited.

Below: how the two types differ, a real run where I changed a printed-style code's destination and watched the history record it, and which QR tools let you edit and track on which plan, checked on 21 October 2026.

Static vs dynamic at a glance

Static QR codeDynamic QR code
What the code holdsThe full destination (a URL, Wi-Fi details, a vCard)A short link that redirects to the destination
Change where it goes after printingNo. You print a new codeYes. Change the destination; the printed code stays the same
Count scansNo. Nothing sits between the phone and the pageYes. Each scan passes through the short link and is recorded
Works without an accountYes, foreverOnly while the short link service keeps redirecting it
Typical costFree almost everywhereOften capped or paid. On LotsLink, free and unlimited
Good forWi-Fi passwords, contact cards, content that never movesMenus, flyers, packaging, posters, anything you might update or measure

The rule of thumb: if it's going on paper and the page behind it could ever change, make it dynamic.

How a dynamic QR code works

A dynamic code is just a QR code for a short link. On LotsLink, the code always opens a short URL such as lots.link/your-slug, and that short URL redirects to whatever destination the link has right now. Because every scan passes through the short link, LotsLink records it as a click on that link, with country, city, device and referrer when available. Known bots and link previews aren't counted, and since visitor IP addresses aren't stored, scans are recorded visits, not unique people.

When you change the destination, three things stay put:

  • The slug, the short URL and the QR code image. Nothing on the printed piece changes.
  • The link's clicks and its UTM tags. If the link was created with UTM tags and the new address doesn't set its own, LotsLink adds the original tags back, so your campaign reporting doesn't break.
  • The history. LotsLink records each destination change: the old address, the new one and when it happened.

The new destination gets the same checks as a new link (HTTP or HTTPS only, and known phishing or malware pages are refused), and it reaches every visitor within about a minute. Owners and admins can change any link in a workspace, members only the links they created, and viewers can't change links.

One thing not to change: the slug. A new slug is a new short URL, and every code already printed with the old one stops working. Change the destination, never the slug.

A real run: change a code's destination and check the history

On 21 October 2026 I ran this end to end through the LotsLink MCP server, the same way your agent would, on a test link pointing at example.com pages:

  1. Created a link to https://example.com/menu/autumn with the slug qr-demo-menu-1021 and UTM tags utm_source=qr, utm_medium=print, utm_campaign=menu-demo (lotslink_create_link).
  2. Made its QR code, a 512 px PNG of https://lots.link/qr-demo-menu-1021 (lotslink_create_qr_code). The code's URL was saved on the link.
  3. Checked the redirect. The short link sent visitors to the autumn page, with the three UTM tags attached.
  4. Changed the destination to https://example.com/menu/winter, with no UTM tags in the new address (lotslink_update_link with original_url). The response confirmed "Destination updated. The short URL and QR code stay the same." and that the redirect cache expires within a minute. The saved destination came back as the winter page with all three UTM tags added again.
  5. Checked the redirect again. Three seconds after the change it still went to the autumn page (the cached redirect); about a minute later it went to the winter page, UTM tags included. Same short URL, same QR code image.
  6. Read the history with lotslink_get_link. The link now carries a destination_changes list, newest first:
"destination_changes": [
  {
    "previous_url": "https://example.com/menu/autumn?utm_source=qr&utm_medium=print&utm_campaign=menu-demo",
    "new_url": "https://example.com/menu/winter?utm_source=qr&utm_medium=print&utm_campaign=menu-demo",
    "changed_by": "<user id>",
    "changed_at": "2026-10-21T03:57:17Z"
  }
]

The same list comes back with the link's click analytics (lotslink_get_link_analytics), so when you read a spike or a drop in scans you can see whether the destination changed that day. 7. Deactivated the test link (lotslink_update_link with is_active: false). Nothing was deleted.

The whole run took a few minutes, cost nothing, and didn't touch a custom domain. On a dashboard, the same change is Edit Link, then Destination URL.

Which QR tools let you edit and track

Every tool below makes static codes. The difference is how many dynamic (editable, tracked) codes you get, and on which plan.

ToolFree dynamic codesEdit the destinationScan trackingPaid entry point
LotsLinkUnlimitedAny time, no monthly count, free includedEvery scan through the short link, no scan capFree. You pay only for your own domain ($4 a month)
QR Code Generator (QRCG)None. 14-day free trialYes, on paid plans10,000 scans on Starter, unlimited from AdvancedStarter $9.99 a month billed yearly ($119.88), 2 dynamic codes
QR TIGER3, with 500 scans eachListed from RegularBasic on Free, advanced on paid plansRegular $7 a month, 12 dynamic codes
QRCodeChimp10, with 1,000 scans a month across all of themYes (dynamic codes)Basic on FreeStarter $6.99 a month billed yearly, 50 dynamic codes
UniqodeNone. Static codes free; dynamic codes from a trialDynamic codes onlyDynamic codes onlyEssential $9 a month billed yearly
Bitly2 QR codes a month on Free, not editable thereFrom Core: 5 redirects a month, 20 on GrowthData history from Core (30 days)Core $10 a month, annual only
QRCode MonkeyNone (static only)NoNoFree, no paid plan on the site

Checked on 21 October 2026 on each vendor's own pricing page. Prices in US dollars.

A few things worth knowing from those pages:

  • QR TIGER's FAQ says dynamic codes have no scan limit within a paid subscription and "will only stop working once the plan expires."
  • QRCodeChimp's FAQ says free dynamic codes pause once the 1,000 monthly scans are used and reopen the next month.
  • Uniqode's plans page says dynamic codes made during a free trial stop working when the trial ends unless you subscribe, and that Wi-Fi codes can only be static.
  • QRCode Monkey says its codes are free, never expire and have no scan limit, because they're static: no editing and no statistics.
  • Bitly counts every destination change against a monthly "redirects" allowance, and its free plan has none.

On LotsLink, links on lots.link are free, so a dynamic code there doesn't depend on a subscription. If you put codes on your own domain and later stop paying for it, existing links keep redirecting; only new links on that domain pause.

For the full list with design options and features, see the best QR code generators with tracking.

When a static code is the right choice

  • Wi-Fi access. The network name and password live in the code. Uniqode notes Wi-Fi codes are static only.
  • A contact card for offline use. A vCard code works with no network at all.
  • Something that will never change and that you don't need to count, like a permanent page on your own site.

Everything else on paper (menus, flyers, packaging, event signs, business cards that link to a page) is safer dynamic, because pages move and you'll want to know whether anyone scanned.

Make a dynamic QR code with LotsLink

In the dashboard: create a short link, open it and download its QR code. Later, Edit Link, then Destination URL, to point it somewhere new.

LotsLink also works with the AI agent you already use. Connect https://api.lots.link/mcp (OAuth, no key) from lots.link/mcp, then ask:

Create a short link to https://example.com/menu with utm_source=qr and utm_medium=print, make a 1024 px QR code for it, and give me the PNG. Next month, point that link at https://example.com/menu-winter and show me its destination history.

The agent uses lotslink_create_link, lotslink_create_qr_code, lotslink_update_link and lotslink_get_link. Developers can do the same over REST: PUT /api/v1/lotslink/link/:link_id with original_url, documented in api.lots.link/docs.md.

To read the scans, see how to track QR code scans. Prices for your own domain are on the pricing page.

Common questions

What is the difference between a static and a dynamic QR code?

A static QR code stores the destination itself, so it can't be changed or tracked after printing. A dynamic QR code stores a short link that redirects, so you can change where it goes and count each scan, while the printed code stays the same.

Can I change where a printed QR code goes?

Only if it's dynamic. On LotsLink you change the link's destination in the dashboard (Edit Link, Destination URL) or from your agent, and the printed code opens the new page within about a minute. A static code needs a new print.

Are dynamic QR codes free?

On LotsLink, yes: dynamic codes, scans and destination changes are free and unlimited. Elsewhere it varies by plan. QR TIGER's free plan has 3 dynamic codes with 500 scans each, QRCodeChimp's has 10 with 1,000 scans a month, and QR Code Generator has a 14-day trial instead of a free plan (checked on 21 October 2026).

Do dynamic QR codes expire?

The code itself doesn't, but it only works while the service redirects it. QR TIGER says paid codes stop working when the plan expires, and Uniqode says trial codes stop when the trial ends. LotsLink links on lots.link are free, and if funding for your own domain runs out, existing links keep redirecting.

Can I see when a QR code's destination was changed?

On LotsLink, yes. Each link keeps a list of destination changes with the old address, the new address and when it changed, and your agent can read it with lotslink_get_link or alongside the link's click analytics.