A unique unit code belongs to a single product and never appears on a second one; a batch code, also called a lot code, is the same on every product made under the same conditions. In the GS1 system the difference is written with two separate Application Identifiers: (10) carries the batch or lot number and (21) carries the serial number. Read together with the GTIN in the barcode, a serial number identifies one product, while a batch number identifies a group. Which one you need depends on the question the code is expected to answer.
What do the three identities on a pack identify?
| Identity | What it identifies | GS1 form | Shared by |
|---|---|---|---|
| Barcode (GTIN) | The product type | (01), 14 digits | Every product of that type |
| Batch (lot) number | A group made under the same conditions | (10), up to 20 characters | Every product in the batch |
| Serial number | One product | (21), up to 20 characters | That product only |
According to GS1's list of Application Identifiers, (10) and (21) are not used on their own; both take their meaning from a product identity, typically the GTIN. GS1's EPC Tag Data Standard draws the line clearly: a GTIN identifies a class of products, while a GTIN combined with a serial number (an SGTIN) identifies an individual one. The company that assigns serial numbers is also responsible for never reusing a number under the same GTIN.
In a QR code, these identities appear in a fixed order in the GS1 Digital Link address: first the GTIN, then the batch, and the serial number last. We cover the details in our posts on GS1 Application Identifiers and GS1 Digital Link.
What does a batch code do well?
A batch code gathers products made from the same raw materials, on the same line and usually in the same shift into one record. It has three strengths:
- Recall scope. If a problem is confined to one batch, the recall can be confined to it too. All you need to know is which customers received that batch.
- Expiry and quality tracking. Expiry date, raw materials and production conditions are batch-level facts, and a batch record carries them well.
- Load on the line. The variable data on the label changes once per batch, and products do not need to be scanned one by one.
A batch code can also show channel diversion at coarse resolution: a batch shipped to one region being scanned in another is a signal.
Where does a batch code fall short?
The limit of a batch code is its definition: thousands of products carry the same code.
- Copied codes cannot be told apart. A batch code being scanned a hundred times is expected. Even if one of those scans is on a counterfeit pack, the record cannot show it.
- The location of a single product is unknown. You know which dealers a batch was spread across, not which box went to which dealer.
- The source of diversion does not narrow down. If a batch was split between several distributors, the batch code cannot tell you which delivery a misplaced product came from.
- The answer to the consumer is limited. A scan can say "this batch was produced", but not "this product has not been scanned before".
What does a unique unit code add?
At product level, every label carries its own number, so the record can speak about individual products:
- Repeated scans become meaningful. A code that belongs to one product being scanned again and again in different places is the strongest sign of a copy.
- Inactive codes become visible. A code that was never read at line exit turning up in the field shows that it came from outside production.
- Diversion can be traced to the delivery. Once products are linked to cases and pallets, the record shows which delivery a misplaced product came from.
- Recalls can be tighter. If a problem affects only part of a batch, the products from that part can be separated.
This has a cost on the line: a print setup that can put different data on every label, and a scan of every product at line exit. You also need to keep count of labels printed and applied, which we cover in our label accounting post.
When is a batch code enough, and when do you need unit codes?
Decide by the question the code has to answer. This sequence helps:
- Write down the question. Narrowing recall scope, seeing channel diversion or catching copied codes?
- Identify the unit of risk. Does the problem affect a whole batch or individual products? Counterfeiting and warranty issues sit at product level; quality issues caused by raw materials usually sit at batch level.
- Look at product value and sales channel. Product level comes first for high-value products, products sold through an authorised retailer network and products at risk of being copied.
- Check line capacity. Can the line print a different number on every label and scan every product? If not, start at batch level.
- Build a numbering structure that can grow. Even if you start at batch level, the structure should allow a move to product level later.
- Measure with a pilot. Widen the scope once the records hold up for one product group.
In short: if the question is only recall scope and expiry tracking, a batch code is enough for most product groups. If the question is copied codes, or which channel a single product came through, you need unit codes. Scan points and set-up are covered in our post on setting up a product tracking system.
Why does Tagvex start at product level?
Tagvex is a traceability system that gives each product, or each batch, its own copy-resistant code, tracks the distribution path and makes channel diversion visible. Product level is the default, because copied-code alerts and tracing diversion back to a delivery only work fully when individual products are distinguishable in the record.
Batch level is offered too. Where recall and expiry tracking come first, or where the line is not yet ready to scan every product, you start at batch level and can move to product level later. The level is chosen during the needs analysis, after looking at the product, the label layout, the production line and the distribution chain. See how we work.
Frequently asked questions
Is a lot number the same as a batch number?
Yes. Lot is another name for batch; GS1 also names AI (10) "batch or lot number". The pack may say "LOT", "Batch" or "Batch No".
Does a serial number replace the batch number?
No, the two can be used together. The serial number identifies the product and the batch number identifies the group. In a product-level record each serial number is linked to a batch, so recalls work by batch and copy checks work by product.
Can you start at batch level and move to product level later?
Yes, if the numbering structure was built to grow; with Tagvex, moving from batch to product level later is possible. What makes the move hard is a number format with no room for a new field and a line with no scan at line exit.
Do product-level codes mean a separate label for every product?
No. The number can go into the area of the existing label where variable data is already printed; a separate label is also an option. What you need is a print setup that can put a different number on every label.


