There are exactly two kinds of QR code, and the difference between them decides whether your campaign is measurable or a black box. Most people never learn which one they're using until it's too late to change, usually right after they've printed ten thousand flyers pointing at a broken link.
Let's clear it up once, properly, so you pick right the first time.
A static QR code has the destination encoded directly into the pattern. The URL is the code. Nothing sits between the scan and the link.
A dynamic QR code encodes a short redirect address. When someone scans, they hit that redirect, which then forwards them to wherever you've pointed it, and you can change that "wherever" any time, without touching the code.
That single architectural difference cascades into everything that matters.
| Static | Dynamic | |
|---|---|---|
| Destination | Baked in permanently | Editable anytime |
| Fix a typo after printing | Impossible, reprint | Just update the redirect |
| Scan analytics | None | Full scan data |
| Per-placement tracking | No | Yes |
| Works without internet at scan | Direct link only | Needs the redirect to resolve |
| Cost | Usually free forever | Usually a subscription |
Static isn't useless, it's just narrow. It shines when the destination will never change and you don't need to measure anything:
If the destination is fixed for life and analytics don't matter, static is fine and free. Print it and forget it.
The moment you're running a campaign, something you want to learn from and improve, static falls apart, for two reasons.
One: you can't fix mistakes. Print a wrong URL, a link that later expires, or a landing page you decide to restructure, and a static code is dead paper. With a dynamic code you just repoint the redirect and every already-printed code starts working again. For print, where reprints cost real money, this alone justifies dynamic.
Two: static codes are blind. They carry no analytics. You'll never know how many people scanned, when, or from where. The entire reason to put a code on offline media is that offline finally becomes measurable, which city, which hoarding, which day. Static throws that away. Dynamic is what makes offline attribution possible at all; we go deep on that in the offline advertising attribution guide.
Here's the capability that only dynamic unlocks and that changes how you plan media. Because each dynamic code is its own trackable redirect, you can generate a different one for every placement and compare them.
Same ad in Mumbai, Pune, and Nagpur? Three dynamic codes. Now your dashboard tells you Pune scanned twice as hard per rupee, and next quarter's budget writes itself. Same creative in two publications? Two codes, and you learn which vendor actually delivers. Static gives you one blurry aggregate number; dynamic gives you the breakdown you can act on.
To keep this balanced, dynamic isn't free of downsides:
For a lifelong "point to my homepage" code, those trade-offs aren't worth it, go static. For a campaign you want to measure and tune, they're trivial next to what you gain.
Whichever type you choose, keep the code standard so the phone's native camera reads it with no app, that's the frictionless default that makes QR work in India at all. Both static and dynamic codes scan natively; dynamic doesn't cost you any friction there. (Separate thing worth knowing: image triggers, where a printed picture itself launches an experience with no code, only work inside the Adscano scanner or an app embedding it, so those are a beta tool for audiences you already have, not a substitute for a native-camera QR on a public placement.)
You almost never need to agonise. Ask yourself: do I want to measure this, or ever change where it points?
If yes to either, and for any real campaign the answer is yes, use dynamic. If it's a permanent, unmeasured link that'll never move, static is fine and free. There's no prize for being frugal on a code you can't fix or read: the few rupees a month a dynamic code costs are trivial next to a wasted print run or a quarter of media spend you can't attribute.
Get this call right before you print, because the code is the one thing you can't edit after it's on paper, unless, of course, you made it dynamic.
Adscano's codes are dynamic and per-placement out of the box, editable after print, trackable from the first scan. Start free and never print a dead code again.