Anti-counterfeit QR codes: how they work and how to print them
A QR code on a pack is not, by itself, anti-counterfeit. The same square that opens your website can be photocopied a million times. What makes a QR anti-counterfeit is what sits behind it: one unique code per unit, a database that remembers every scan, and rules that notice when the same code turns up twice. This page is the practical version.

An anti-counterfeit QR code is a QR that is unique to a single unit of product, generated from a sparse keyspace so it cannot be guessed, and linked to a record that stores every scan with its time and location. When a consumer scans it, the brand's system confirms the code was issued, reports whether it has been scanned before, and flags copies by detecting the same code scanned in different places or too many times. It differs from a marketing QR, which is identical on every pack and only opens a link. Anti-counterfeit QR codes are printed by variable-data digital print, inline inkjet or pre-printed labels at roughly ₹0.05 to ₹0.80 per unit in India.
A marketing QR versus an anti-counterfeit QR
| Marketing QR | Anti-counterfeit QR | |
|---|---|---|
| Codes per SKU | One, identical on every pack | One per unit, never repeated |
| What it encodes | A fixed URL | A URL carrying a unique serial and check digits |
| What happens on scan | Opens a page | Looks up the serial, records the scan, applies rules, returns a verdict |
| Memory of past scans | None | Every scan with time, location and device |
| Copy resistance | None; copying is the point | Copies are detected when the code is scanned more than expected |
| Print method | Static artwork | Variable data at print time |
| Also enables | Nothing beyond the page | Warranty registration, loyalty reward, sell-through map |
The middle ground, a dynamic QR whose destination can be changed but which is still the same on every pack, is useful for campaigns and useless for authentication. Dynamic vs static QR codes explains the distinction, and the serialisation guide covers how unique codes are generated.
Serialisation and tamper panels
Serialisation means each unit's code is drawn from a keyspace large enough that guessing is hopeless: a 12-character code from a 32-character alphabet has more than a thousand trillion combinations, and only a few million are issued. Check digits reject mistyped or malformed codes before they hit the database. The code is tied at issue time to a SKU and a print batch, so a wire coil's code presented as a paint can is itself a signal.
A tamper or scratch panel adds a second property: the code cannot be read until the buyer removes the panel. This matters in categories where counterfeiters photograph codes on unsold stock and reprint them, because the genuine code is never exposed before sale. Many brands print a visible QR for the marketing journey and a scratch-covered QR or alphanumeric code for verification and reward. Scratch cards vs in-pack coupons compares placement options.
First-scan logic and how copies are detected
The rule at the heart of the system is that the first scan of a code in a plausible place is treated as the genuine unit, and every later scan is assessed against it. A second scan a day later in the same city from the same phone is the buyer re-checking. A second scan in a different state within an hour is a copy. A batch of codes scanned two hundred times each is a counterfeiter who copied a carton's worth. These patterns are visible in the scan ledger without any special hardware, and they are the reason the verdict must say 'this code has been checked before' rather than a bare 'genuine'.
- Duplicate-scan count. Codes scanned beyond a per-SKU threshold are flagged; the buyer sees a warning and a report option.
- Geographic dispersion. The same code scanned in more than one district, or far from the distributor it was dispatched to, is scored as suspect.
- Velocity. Scans of consecutive serials within minutes, or from one device across many serials, indicate a copied sheet or a dealer scanning on others' behalf.
- Batch anomalies. A batch whose total scans exceed the units printed, or whose scans cluster in a market where it was never shipped.
- Unissued codes. Valid-looking codes that were never generated, which points to a guessed or fabricated series.
The fraud prevention guide covers how these rules are tuned so that genuine re-scans are not punished. For brands facing organised copying, a copy-detection pattern or print forensics can be layered on; the anti-copy QR codes post is honest about what each adds.
Three ways to print anti-counterfeit QR codes
| Method | How it works | Per-unit cost (observed) | Where it fits |
|---|---|---|---|
| Pre-printed labels | Label printer produces serialised rolls from the brand's code file; applied at packing | ₹0.30 to ₹0.80 | Pilots, low and mid volume, no line change |
| Inline inkjet or thermal transfer | Printer on the packing line marks each unit from a code feed | ₹0.05 to ₹0.20 after capex | High volume lines: wires, lubricants, cement bags |
| Variable-data digital print | The converter prints the code inside the pack artwork | ₹0.10 to ₹0.40 | Cartons, sachets and labels already on digital presses |
Whichever method, the control that matters is reconciliation: codes generated against codes printed against codes shipped. Unprinted codes are voided so that a leaked file from the print vendor is useless. The QR cost estimator compares the methods for your volumes, and the QR code generator lets you test readability at your label size before committing.
Scan-to-verify on WhatsApp
Most Indian consumers will not install an app to check a product. The verification flow that gets used is: scan with the phone camera, which opens a WhatsApp chat pre-filled with the code; or photograph the code and send it to the brand's WhatsApp number. The reply arrives in seconds in the buyer's language: the product name, whether it is genuine, whether it was checked before, and a button to register the warranty or report a fake. The same conversation captures the buyer's name, city and invoice photo if a warranty applies. Unotag runs this in ten Indian languages through the WhatsApp portal.
A six-step rollout
Pick the SKUs and the placement
Start with the SKUs most copied, usually the top two or three sellers. Decide on-pack, in-pack, or scratch-covered, and where the label sits so it survives handling.
Generate and register codes
Issue a sparse-keyspace batch per SKU and print run, tied to the intended distributor geography where known.
Print and reconcile
Send batch files to the printer or line. Reconcile printed against generated; void the remainder.
Configure verification
Set up the WhatsApp and web flows in the languages of your markets, the verdict messages, the duplicate and geography thresholds, and the report-a-fake route.
Tell the market
Print the instruction on the pack, brief dealers and installers, and attach a reason to scan: a warranty, a reward, or both.
Watch the ledger
Review flagged codes weekly, map suspect clusters, and send field officers to the shops that scans point to. The field programme guide covers this.
Mistakes that make an anti-counterfeit QR useless
- Returning 'genuine' on every scan. If the verdict never mentions prior scans, a copied code is indistinguishable from the real one.
- Printing the code too small or on a curved, glossy surface. Test readability at the real label size on a mid-range phone before the print run; the QR code generator helps.
- No instruction on the pack. A code with no line of text beside it in the regional language is rarely scanned.
- Skipping reconciliation. Unvoided surplus codes from the print vendor are the commonest source of leaked genuine codes.
- No reason to scan. Verification rates stay low unless the scan also registers a warranty or earns a reward.
Key takeaways
- A QR is anti-counterfeit only if it is unique per unit and backed by a database that remembers every scan.
- Copies are detected through duplicate counts, geography, velocity and batch anomalies, not through the print itself.
- Print by label, inline inkjet or variable-data digital at ₹0.05 to ₹0.80 per unit; reconcile generated against printed.
- Verification on WhatsApp with a warranty or reward attached is what gets consumers to scan.
Frequently asked questions
What is an anti-counterfeit QR code?
A QR code that is unique to one unit of product, generated so it cannot be guessed, and linked to a record that stores every scan. Scanning it confirms the code was issued and reports whether it has been checked before, which exposes copies.
How do anti-counterfeit QR codes work?
Each unit gets a serialised code. On scan, the brand's system looks the code up, records time and location, applies duplicate, geography and velocity rules, and returns a verdict such as genuine, already verified or suspicious, usually on WhatsApp or a web page.
What is the difference between a normal QR code and an anti-counterfeit QR code?
A normal QR is identical on every pack and simply opens a link. An anti-counterfeit QR is different on every unit and is checked against a database that remembers prior scans, so a copied code is detected when it appears more than expected.
Can anti-counterfeit QR codes be copied?
The print can be photographed and reproduced, but the copy shares one serial with the genuine unit. When both are scanned, the duplicate count and location mismatch flag the copy. Scratch panels prevent codes being copied from unsold stock.
How do you print anti-counterfeit QR codes?
Three ways: pre-printed serialised labels applied at packing, inline inkjet or thermal transfer on the packing line, or variable-data digital print inside the pack artwork. Each takes a batch file of unique codes from the brand's system.
How much do anti-counterfeit QR codes cost?
Across programs Unotag runs, labels cost ₹0.30 to ₹0.80 per unit, inline printing ₹0.05 to ₹0.20 after printer capex, and digital print ₹0.10 to ₹0.40. The verification platform is a separate monthly subscription.
Do customers need an app to scan an anti-counterfeit QR code?
No. The phone camera opens the verification page or a pre-filled WhatsApp chat, or the customer sends a photo of the code on WhatsApp. The verdict returns in the customer's language within seconds.