GS1 Case Label Requirements: What It Carries and Four Ways It Fails
A GS1-128 case label printed at 20 mil has 0.013 mm of room. GS1 sets the narrowest bar on a barcode scanned in distribution at 0.495 mm, and 20 mil is 0.508 mm. Shrink that barcode by more than 2.6% and it is out of specification, and nothing on the label looks different. The human-readable line is the same, the lot is right, and the case ships.
That is why a case label goes wrong more often in the product list and the print dialog than in the barcode generator. When a retailer or distributor asks a specialty food brand to start labeling cases, it is asking for three facts in one barcode: which case this is, when the product inside stops being good, and which lot it came from. Each fact has a way to be wrong, and the printer adds a fourth. Every one of the four passes a glance at the label.
A case label is three facts in one barcode
The label goes on the shipping case. It is not the SSCC label on the pallet, which identifies a pallet and ties it to the advance ship notice, and it is not the UPC on the jar, which the register scans. A GS1-128 case label carries three Application Identifiers, each a short numeric prefix that tells the scanner what the next field means:
- (01) the case GTIN-14, the 14-digit number for this case configuration.
- (15) or (17) a date as YYMMDD. GS1 titles AI 15 "best before or best by" and AI 17 "use by or expiry."
- (10) the lot, up to 20 letters and digits.
Under the bars sits a human-readable line that shows the same data with the AIs in parentheses. The bars themselves have a size. GS1's General Specifications set the narrow bar of a GS1-128 scanned in general distribution between 0.495 mm and 1.016 mm, the bars at least 31.75 mm tall, and a quiet zone of at least ten narrow bars clear on each side.
Here is the label for a case of 12 Spicy Habanero Hot Sauce from Cinderhaven Provisions, lot 101426B, best by October 14, 2027. Cinderhaven Provisions is a fictional company, its product list is a synthetic dataset, and its GTINs sit on GS1's demonstration prefix; the label rules the example runs through are GS1's own.
(01) 10614141100030 (15) 271014 (10) 101426B
The person who prints this is whoever builds the pickup paperwork the afternoon before the truck: the product list open in one window, the label PDF in another, a Zebra on the shipping desk loaded with 4 x 6 stock. Everything that follows happens at that desk.
Two failures shrink the bars
The long lot code. At 0.508 mm, the Habanero barcode runs about 124 mm, or 134 mm with its quiet zones, along the 6-inch (152 mm) side of the label. That leaves room for about three more characters of lot. AI 10 allows 20. A 20-character lot of letters and digits pushes the same barcode to about 224 mm, past the 6-inch side and past the 165.10 mm GS1 allows any GS1-128 symbol. Software that fits it to the label anyway has to shrink the bars to about 0.35 mm, well under the 0.495 mm floor. The label prints, the human-readable line is perfect, and the barcode is out of specification. The honest fixes are a shorter lot code or a second barcode that carries the lot on its own.
The Fit to page print. The PDF can be right and the printout wrong. A print dialog set to Fit to page rescales the page to the printer's margins. A 0.508 mm bar has 2.6% of headroom above GS1's floor (0.495 ÷ 0.508 = 97.4%), so a rescale of 3% is enough to put every bar on the label out of spec. Print at 100%, which the dialog may call Actual size, on 4 x 6 stock.
The printer's resolution sets the remaining margin. A 203 dpi thermal printer lays down dots 0.125 mm wide, so a 0.508 mm bar becomes four dots, 0.500 mm: 0.005 mm above the floor. A 300 dpi printer makes the same bar six dots of 0.0847 mm, 0.508 mm exactly. Both are in spec. The 203 dpi label has almost nothing to spare, and a template or print setting that eats that margin produces a label the dock scanner can't read.
Two failures put the wrong data in a good barcode
The jar's number on the case. The Habanero jar's UPC is 614141100033. Padded with two zeros, it fits the 14-digit (01) field as 00614141100033 and scans cleanly. But that number identifies one jar. A receiving scan that reads it records a jar where twelve arrived. GS1 is explicit that a product sold in different quantities, a unit, a six-pack, a 12-pack, gets a unique GTIN for each (General Specifications, section 4.2.2). The 12-jar case is 10614141100030. Cinderhaven also ships a 24-jar case of the same sauce, and it needs its own number, 20614141100037. One GTIN on both case sizes makes a 12 and a 24 the same item to every system downstream. The same goes for a case GTIN with a single wrong digit: the barcode is valid, the item is not.
The wrong date AI. AI 15 and AI 17 are both six digits and both scan. They make different claims. In GS1's definitions (sections 3.4.5 and 3.4.7), AI 15 marks the end of the period a product keeps specific quality attributes, and AI 17 marks the limit of use; for food, a date after which eating it may be a direct health risk. A shelf-stable hot sauce with a best-by date belongs under AI 15. Encoded as AI 17, the barcode tells every system that reads it the product expires, while the printed words say it is only past its best. The printed words should match the AI, and California now sets the words. For food made on or after July 1, 2026, AB 660 requires "BEST if Used by" for a quality date and "USE by" for a safety date on any date label a manufacturer chooses to show. A case label that prints "BEST if Used by" next to an AI 17 contradicts itself.
None of the four is visible to someone holding the label. The two data failures scan perfectly; the two size failures look perfect. Each one shows up only where a scanner or a receiving system reads the case.
The fix starts at the product list
A wrong GTIN in the product list makes a wrong label every time it prints, so the list gets checked before the printer does. The GTIN Validator Kit checks each GTIN in a product list against GS1's rules, including case-to-unit consistency.
Printing is the second half. I built the Case Label Kit around the four failures above. It is one HTML file that runs offline in the browser: load the product list, pick the item and the case size, type the lot and the date, and it prints a 4 x 6 PDF. It refuses a unit UPC in the case GTIN field and a GTIN used on two case sizes. It prints the bars at 0.508 mm and never shrinks them; when a lot will not fit, it moves the lot to a second barcode. The kit page has a sample label and a sample product list to test against before buying.
Send the product list before the labels
The Case Label Kit is $149, here. If you would rather have the list checked first, send me your product list with the case GTINs and the units per case. I will check every case GTIN against its unit and its case count and write back with the rows that would print a wrong label. Send it here. I'll write back. No call.
Next step: Chargebacks you can't trace
Find out what it is costing you. Free, no call.
The offers below run this on your own data. The scan is free, and the Snapshot credits in full toward the audit.
Private, expiring upload, never email. Mutual NDA before anything moves. Files destroyed within 30 days of delivery, with a certificate. Methods published, tools open source.