Nobody sets out to run a bad QR campaign. The mistakes that tank scan rates aren't dramatic, they're quiet. The code works fine in the design file, the ad looks clean, everyone signs off, and then the scans just... don't come. Or they come and vanish.
The frustrating part is that by the time you see the flat number, the money's spent and the print run is out in the world. So here are the nine we see most often, each one a silent leak, each one avoidable if you catch it early.
The number one killer. A bare code sitting on an ad is a question with no answer, scan for what? People need the payoff spelled out before they'll spend the effort. "Scan for ₹150 off" works; a lonely square doesn't. If your ad shows a code but no promise next to it, that's your leak. Add the reason first.
Designers shrink codes to keep the layout pretty. But a QR has to be physically large enough for a camera to resolve at the distance people read the ad. Rough rule: the code's size should be at least a tenth of the reading distance. A hoarding read from 20 metres needs a roughly 2-metre code; a tiny one up there is decorative, not functional. When in doubt, go bigger.
Scanners read the contrast between dark and light modules. Slap a code over a face, a landscape, or a gradient and those edges blur. Keep codes on clean, solid, high-contrast backgrounds, dark code, light field. And leave the quiet-zone margin around it; text crammed against the edge breaks the read.
A static code bakes the destination into the pattern permanently. Typo the URL and the code is dead, reprint everything. Worse, you learn nothing, because static codes carry no analytics. A dynamic code points at a redirect you control, so you can fix the destination after printing and see every scan. For anything printed, static is a trap. The full comparison lives in dynamic vs static QR codes.
The scan succeeds and the person lands on your full website, menu, banners, cookie prompt, the works. On a mobile connection that's a slow, confusing dead end, and they bounce. A scan is a high-intent moment; honour it with a single-purpose page that delivers the promised reward and nothing else. Homepage dumps waste the best moment you'll get.
Even a dedicated page fails if it's bloated. India runs on wildly variable mobile data, and your page has to load on the bad connection, not the good one. Hero videos, image carousels, and heavy scripts push load time past the two-second patience window. Build light: one screen, minimal assets, fast render.
You run the same ad across three cities and use the same code everywhere. Now you've got 4,000 scans and no idea which city drove them, so you can't decide where next quarter's budget goes. That's the whole point of putting a trackable code on offline media, quietly thrown away. Use a separate tracked code per city, per publication, per creative.
Some campaigns route people to "download our app first." The moment a scan implies an install, most people quit. The phone's native camera reads standard QR codes with no app at all, that frictionlessness is the entire advantage, so don't throw it away. Image triggers (the printed picture itself launching an experience, no code) are genuinely useful, but they only fire inside the Adscano scanner or an app embedding it, so save those for audiences you already own, not cold outdoor placements where native-camera QR is the right call.
The code scans flawlessly on your monitor, so you approve it, and the printed version fails. Ink bleed, a low-res export, a fold through the pattern, or glossy lamination glare can each kill a code that looked perfect on screen. Print one real copy and scan it with three different phones (an old Android, a new Android, an iPhone) before the run. Two minutes here saves a whole campaign.
Notice what these share. None of them are strategy failures, they're execution details that feel too small to matter until they quietly cost you every scan. QR marketing rewards boring diligence: right size, clean contrast, dynamic and tracked, fast destination, tested on paper.
Run down this list before your next ad goes to press. Most of these checks take seconds. Each one you skip is a leak you won't see until the scans don't come.
| Mistake | Quick fix |
|---|---|
| No reason to scan | Add the offer above the code |
| Code too small | Size to ~1/10 of reading distance |
| Busy background | Solid high-contrast field + quiet zone |
| Static code | Use dynamic, trackable codes |
| Homepage dump | Single-purpose landing page |
| Heavy page | Build light; assume 3G |
| One shared code | One tracked code per placement |
| App required | Rely on native camera |
| Untested print | Scan the proof on three phones |
Adscano gives you dynamic, per-placement codes and shows you the scan number in real time, so leaks surface fast. Get started free and stop the quiet ones.