Running a programme · For a printer's production manager
Artwork spec
Everything on this page exists because a QR code that does not scan in a shop is worse than no QR code at all — the buyer concludes the product is fake. These are the tolerances that keep that from happening.
Before you start: the codes are dead #
The codes in your print file answer We can't verify this code to every scanner until someone activates the batch in the AVRA console, after QC. This is deliberate — it is what makes a stolen print file and a press overrun worthless.
It also means a test scan before activation is supposed to fail. If you scan a label off the press and it says We can't verify this code, the label is correct. Print, test the shape and the read, then activate, then test the verdict.
The QR code #
| Requirement | |
|---|---|
| Printed size | 15 mm × 15 mm minimum, square. Below 15 mm a phone camera in shop lighting, held by a customer who is not trying very hard, does not read reliably. |
| Resolution | 600 dpi minimum at final size. |
| Quiet zone | 4 modules of clear space on all four sides. It is part of the supplied SVG. Do not crop it, and do not let artwork, foil, a border rule, a crease, a glue flap or a die line enter it. |
| Error correction | Level M on the visible shelf QR. Level H on the second code when the second factor is a QR — it lives under a scratch panel and the panel abrades it. Both are already set in the files we supply. |
| Colour | Black modules on a light ground. Not dark grey. Not a brand colour. Not reversed (light on dark). |
| Finish | Matte. No gloss varnish, no gloss lamination, no holographic effect and no metallised film over the QR area. Keep the QR area matte and light even when the rest of the pack is glossy, metallised or holographic. |
Contrast: test the light ground after the code is printed on the actual substrate and the pack is finished, on a verifier your partner holds. A code on white paper, a code on silver foil, a code on kraft board and a code on a shrunk sleeve are four different scans. Ask us for the current contrast target — it depends on your substrate.
Which files to print from #
| File | What it is | Print from it? |
|---|---|---|
qr/ (SVG files) | One vector file per label. Scales to any size with no loss. | Yes. |
codes.csv | One row per label, one column per thing. For variable-data printing. | Yes — through your own VDP software. |
| The Excel bundle | The same labels with the QR embedded as a PNG for human handover and sign-off. | No. The PNG is 338 dpi at 15 mm. It is for looking at. |
manifest.csv | One row describing the batch itself: batch id, brand, product, line, mode, which second factor, the label range, the verification limit, lot number, the printed dates, and the scan URL these codes were built against. | For the job bag and for QC. |
SHA256SUMS.txt | A checksum per file, taken as each file was written. | To prove the file that reached you is the file AVRA built. Check it before you plate. |
The columns, and the one rule about row order #
codes.csv has two or three columns, never more: label (the label number, an integer), qr (the URL the visible shelf QR encodes), and qr2 or scratch (the second factor, when the batch has one — qr2 is a URL for a second QR, scratch is a short code printed as plain text).
Nothing else identifies a label. There is no separate serial number, no human-readable code beside the QR, and no way to reconstruct the pairing from the label after printing. The label column exists for exactly this — it is your check, and QC's way of finding label 4,312 on a roll.
The scratch code is cash #
When the second column is scratch, that code is the thing that pays a reward or claims a unit. Whoever can read the file can claim every reward in the batch, before a single pack reaches a shop.
- Keep the file on the machine that needs it and nowhere else.
- Do not email it. Do not put it in a shared drive folder the whole floor can see. Do not print a proof sheet with the codes visible and leave it on the line.
- Delete your copy once the run is signed off. AVRA locks the file to a platform admin the moment the batch is activated, and purges it 30 days later — do the same with yours.
The scratch panel #
The hidden code is printed in plain text under a scratch panel by default — that is the smallest and cheapest label. A second QR under the panel is an option the brand chooses at generation, and it needs a larger panel.
| Requirement | |
|---|---|
| Opacity | The panel must fully obscure the code, including under a phone torch held against it. A buyer standing in a shop must not be able to read a code without scratching, and neither must a counterfeiter with a bright light. Agree the coating system, the number of coats and the opacity test with your partner. |
| Legibility after scratching | The code must survive scratching intact, in a mono face with clearly distinguished characters. The code alphabet already excludes look-alike characters, so 0/O and 1/I/l confusions are designed out. |
| Placement | The panel must not overlap the shelf QR or its quiet zone, and scratching it must not abrade the shelf QR. Put them on opposite sides of the label. |
| Release | The panel must not lift the underlying print when scratched with a coin. Test with a coin, not a fingernail. |
Ask us for the current coating spec — it depends on your substrate.
Per substrate #
The rules above hold everywhere. These do not — they are what changes with the format, and the last two columns are the ones that cost a reprint. The same table is on the partner page; it is repeated here because the reader of this page is the one who has to act on it.
| Substrate | Which codes it can carry | Tamper-evidence available | What changes on press |
|---|---|---|---|
| Pressure-sensitive label | Both: shelf QR on the face, hidden code under a scratch panel. | Destructible/brittle face stock, VOID-release adhesive, or a tamper-evident die cut. A plain paper label on permanent adhesive gives none. | Matte, light window. Below ~25 mm container diameter the curve starts costing reads — move to a flat panel or a wrap-around tail. |
| Hologram / OVD foil | Both. | The strongest generally available. | A matte, non-metallised window for the QR is mandatory: printed straight onto metallised foil the code has poor contrast and mirrors the shop's tube light into the camera. |
| Shrink sleeve | Shelf code reliably. A hidden code needs a cap seal, a perforated tear-off, or a second label under the sleeve. | Only from a perforated tamper band. A plain full-body sleeve can be slit, removed and replaced. | Distortion mapping. Place the code in the lowest-shrink band, pre-distort it with the rest of the artwork, and proof on a shrunk bottle, never flat. |
| Folding carton / mono-carton | Both: shelf QR outside, hidden code on the inside face or under a glued flap. | None from the board. It has to come from a seal across the flap, a tearing glue closure, or a shrink band. | Dot gain on uncoated board — allow for it at plate stage rather than shrinking the code. Keep the code off the crease, off the glue flap, and out of any spot-UV. |
| Flexible pouch / laminate | Shelf code outside; hidden code on the inside web or under a zipper flap. | Only from the seal, and a carefully re-sealed pouch is hard to detect. None from the film. | On rotogravure the cylinder is fixed, so variable data comes from a separate inkjet or laser station, in-line or on the pouching machine. Metallised film needs a white base under the code. |
| Corrugated shipper | Shelf code only. | None. Treat any evidence claim on a logistics outer as false. | Low contrast and heavy dot gain on kraft: print at 18–20 mm, not 15, on a white-lined board or a preprinted liner — or apply a PS label to the corrugate instead. |
| Direct mark on the product (laser, thermal inkjet) | Shelf code only, unless a second surface exists. | None from the mark. | Contrast is everything; a laser mark on a dark or shiny surface usually fails. Proof on the real material at the real line speed. |
A code is not tamper-evidence. It proves this label was issued for this unit and has not been claimed. Proving the pack was not opened is a physical job. AVRA says tamper-evident and claims nothing stronger: a pack that shows it was opened is achievable; one that cannot be opened is not.
And the format decides the mode. Dual Code needs somewhere to hide the second code. Where the format has nowhere — a bare sleeve, a corrugated outer, a direct mark — the batch runs single mode: the first N verifications answer GENUINE and the N+1th answers SCANNED BEFORE. Tell the brand that before the run, not after.
Still yours to specify, whatever the format: the overall pack size and shape, the substrate and the adhesive or seal, the tamper-evident construction you are supplying, and the application temperature and curing.
Proofing and QC #
Before the run:
- Verify the file. Check
SHA256SUMS.txtagainst the files you received. - Check the manifest. The batch id, product, lot number and label range in
manifest.csvmust match the job bag. A batch printed against the wrong job is unrecoverable once it is on a pallet. - Proof on the real substrate, finished. A QR proofed on paper and printed on holographic film, kraft board or a shrunk sleeve is a different scan. If the pack shrinks, proof it shrunk; if it is laminated, proof it laminated.
After the run, before activation:
- Pull labels from the start, the middle and the end of the run. Presses drift; a QR that reads at the start can stop reading by the end.
- Scan each one on five different phones. At minimum: two budget Android handsets of different makes, one mid-range Android, one iPhone, and one phone with a scratched camera lens. Use the default camera app, not a scanner app — your buyer will use the default camera app.
- Scan in shop lighting, not office lighting. Under a tube light, at an angle, held by one hand.
- Every one of these should say We can't verify this code. That is correct — the batch is not activated yet. You are testing that the code reads, not what it says.
- Scratch a panel and check the code underneath is fully legible and the shelf QR beside it is undamaged.
Then activate the batch in the console, and re-scan two labels. Now they should say GENUINE.
What fails QC #
Any one of these stops the run:
- A QR under 15 mm, or one that has been scaled non-uniformly.
- Anything inside the quiet zone — artwork, a rule, a die line, foil.
- Gloss varnish, lamination gloss, metallised or holographic film over the QR area.
- On a sleeve: a code outside the mapped low-shrink band, or one proofed flat.
- On corrugated: a code under 18 mm, or printed straight onto unlined kraft.
- A label that fails to read on any of the five test phones.
- A scratch panel that can be read through under a torch.
- A scratch panel whose removal damages the shelf QR.
- Row order that cannot be proven to match the file.
After activation #
Once the batch is activated, the print file becomes platform-admin-only inside AVRA, every download is recorded, and the file is purged 30 days later.
Last reviewed 18 Sep 2026 · Something wrong? connect@avrascan.com