Too much data in one barcode: when a GS1-128 overflows
LabelCraft - barcode labels for Shopify that print at exactly the size you set.
Every label prints at the size you set - measured, not approximate.
Overflow or a missing barcode always raises a visible warning before you print.
Modules snap to your printer's dots, so codes stay crisp and scan first time.
We never overwrite or reassign a product's existing barcode.
You tried to pack a GTIN plus net weight, price, batch and serial into one GS1-128 (or plain Code 128) symbol, and the trailing fields fell off. This is not a bug - a single linear barcode has a hard capacity ceiling, and a payload that tags every field with an AI (Application Identifier) hits it faster than the raw digit count suggests. This guide explains why, and what to do about it.
Every extra field is tagged, and every tag costs characters
A GS1-128 carries a GTIN plus extra fields, each prefixed by an AI (Application Identifier) that says what the digits mean: 01 for the GTIN, 10 for batch/lot, 17 for expiry, 3103 for net weight, 3922 for price, and 21 for serial. The AI digits, the field value and a separator between variable-length fields all live inside the same one symbol. See GS1-128 Application Identifiers for the exact element strings LabelCraft builds.
The hard ceiling: 48 symbol characters, 165.1 mm
A single GS1-128 symbol holds at most 48 symbol characters and 165.1 mm of printed length. Past either limit it physically cannot be one barcode - there is no font size or printer setting that buys more room inside one symbol. The only way past the ceiling is to carry less, or to split the data across two symbols.
The catch is that 48 characters is not the same as 96 digits. Code Set C packs 2 digits into one symbol character, but two things eat into that: an odd-length numeric run costs one extra character to finish, and every variable-length field needs its own FNC1 separator that is itself one character. So a real multi-field payload reaches the ceiling well before a naive "digits divided by 2" estimate says it should.
A payload that overflows
- Stack the lot: GTIN (AI
01) + batch (AI10) + expiry (AI17) + net weight (AI3103) + price (AI3922) + serial (AI21) and the total runs over 48 characters. - Because it is over capacity, the trailing fields will not fit in one symbol - the last AIs you added are exactly the ones that fall off the end.
- The fix is to carry less or split: drop a field (embed fewer of GTIN / price / weight), shorten the batch or serial, or put the data across 2 labels.
How LabelCraft catches an over-capacity GS1-128 before you print
LabelCraft runs a pre-flight capacity check the moment you assemble a GS1-128. If the fields you chose run past the 48-character or 165.1 mm limit, it flags the overflow before you print and names exactly which AIs do not fit - it never silently drops the trailing data and prints a barcode that scans back short. This is the same never-silent guard the whole render engine follows: a code that cannot hold what you asked is caught at design time, not at the receiving dock.
Once a symbol does fit, it still has to be wide enough to read. If a too-narrow GS1-128 will not scan after you trim the data, work through barcode not scanning next.
Install free - 200 labels per month →
More guides: GS1-128 Application Identifiers, carton and case labels, barcode not scanning - or contact LabelCraft support.
Related guides
- How to print barcode labels when you receive inventory in Shopify
- Print bin, shelf and stock-location labels
- Shopify Receives by SKU, Not Barcode — How to Label by Barcode
- Does a Shopify Barcode App Multiply Your Case or Pack Quantities?
- Reconcile a supplier packing list against a Shopify transfer
- Partial shipment received? Print labels for just the delta
- Lot, Batch & Expiry Labels for Shopify Receiving
- Put GTIN, price and weight in one GS1-128 barcode
- Carton and case labels: ITF-14 and GS1-128 on the outer box