Warehouse barcode labels: types, formats and printing
How to set up warehouse barcode labels: location labels, GTIN vs SKU barcodes, GS1-128 lot and expiry, SSCC pallet labels, LPNs, symbologies and ZPL printing.
Every scan on a warehouse floor depends on a label someone designed, printed and stuck in the right place. This guide covers each label a warehouse needs, which barcode formats to use and why, how GS1 standards encode lot, expiry and pallet identity, and how to print and test labels before they go on the racks.
The barcode labels a warehouse needs
A warehouse uses labels to identify three kinds of things: places, products and containers. Each gets a different label, and mixing them up is the root of many scanning errors. A picker who scans a product barcode when the system expects a location should get a clear rejection, which only works if the two barcodes look different to the system.
Decide the content and format of each label type before you print anything. Changing location labels after go-live means relabeling every rack in the building.
- Location labels: bins, shelves, pallet positions, floor lanes and docks
- Product labels: the barcode on each sellable unit, usually printed by the manufacturer
- Case and inner labels: the barcode on the shipping carton of a product
- Pallet labels: SSCC labels for pallets leaving or arriving from a trading partner
- LPN labels: internal container IDs for pallets, cartons or totes
- Shipping labels: carrier address and tracking labels on outbound parcels
Location labels: format, placement and readability
A location label carries the location code as a barcode and in large human-readable text, for example A-01-02 for aisle A, bay 01, level 02. Use a consistent code structure across the building so a person can find the location from the text alone. The bin location naming guide explains how to design the codes themselves.
Put shelf and beam labels directly below or on the front of the position they identify, never between two positions. On multi-level pallet racking, labels for every level often sit on the lowest beam or a rack upright so they can be scanned from the ground, usually with an arrow showing which level each one refers to. High positions that must be scanned from a distance need larger barcodes and a scanner rated for long range.
Floor locations and dock doors take heavy-duty floor labels or hanging signs, because forklifts will destroy a paper label within weeks. Choose materials for the environment: a standard paper label will peel in a freezer or a humid dock.
Product barcodes: GTIN vs internal SKU barcodes
A GTIN (Global Trade Item Number) is a globally unique product number issued under a brand owner's GS1 company prefix. On consumer units it is usually printed as an EAN-13 or UPC-A barcode. For example, 9501234567891 is a GTIN-13 built on the 950 prefix that GS1 reserves for examples. The brand owner assigns GTINs, not the warehouse, and each pack level (each, case, pallet) gets its own.
An internal SKU barcode encodes your own code, such as OIL-008, usually in Code 128. It is free and fast to create, but it only means something inside your operation. Retailers and marketplaces generally require GTINs, so an internal barcode is a floor tool, not a trading identifier.
Use the manufacturer's GTIN whenever the product already carries one and it scans. Apply an internal label when products arrive without a barcode, when the barcode is damaged or unreadable, or when several SKUs share one barcode and you need to tell them apart. Never print an internal code in a format that looks like a GTIN: a made-up 13-digit EAN can collide with a real product somewhere else.
GS1-128 and application identifiers for lot and expiry
GS1-128 is a Code 128 barcode with a defined data structure. Each piece of data is preceded by an application identifier (AI), a short number in brackets that says what follows. A case label can carry the case GTIN, lot and expiry in one scan, so receivers stop typing lot numbers by hand.
For example, a case of olive oil might encode (01)19501234567898(17)270831(10)LOT0826: the case GTIN, an expiry of 31 August 2027, and lot LOT0826. Fixed-length fields such as the GTIN and dates are best placed first. Variable-length fields such as the lot must be ended by a separator character (FNC1) unless they come last, which is why lot usually sits at the end. In AI 17, a day of 00 means the end of that month.
GS1 DataMatrix carries the same AIs in a 2D square, which fits on small packs such as vials and cosmetics. A scanner and warehouse system that parse AIs turn one scan into GTIN, lot, expiry and serial fields, which is what makes lot tracking practical at receiving speed.
- (00) SSCC, the serial number of a logistic unit such as a pallet
- (01) GTIN of the trade item
- (02) GTIN of the items contained in a logistic unit
- (10) Batch or lot number, variable length
- (11) Production date, YYMMDD
- (15) Best before date, YYMMDD
- (17) Expiration date, YYMMDD
- (21) Serial number, variable length
- (37) Count of trade items in a logistic unit
SSCC pallet labels
An SSCC (Serial Shipping Container Code) is an 18-digit number that identifies one physical pallet or carton as it moves between companies. It is made of an extension digit, the shipper's GS1 company prefix, a serial reference and a check digit, for example 095012345600000014. Each pallet gets a new SSCC; you do not reuse one for a different pallet.
A GS1 logistic label typically has three zones: a free-form area at the top for the shipper's name and logo, a human-readable section in the middle (SSCC, contents GTIN, count, lot, dates), and the barcodes at the bottom, with the SSCC barcode usually lowest. Retail and distribution customers who receive against ASNs scan the SSCC to receive the whole pallet in one step, so a missing or unreadable label turns into a manual count and sometimes a penalty.
GS1 guidance is to place the label on at least two adjacent sides of the pallet, high enough to scan from a forklift, and not across the stretch-wrap seam. Many retailers publish their own rules for label size and position, so check each customer's routing guide rather than assuming one layout fits everyone.
LPN labels for internal container tracking
A license plate number (LPN) is an internal ID for a container: a pallet, a carton or a tote. Scanning the LPN moves, counts or picks everything on it in one step, without scanning each SKU. Unlike an SSCC, an LPN does not need a GS1 prefix. It only has to be unique within your operation.
Most warehouses print LPN labels in advance on rolls with sequential numbers, such as LP000124, and apply one at receiving when a pallet is broken down or built. Give LPNs a fixed prefix so a scanner input can be told apart from a location or product code. If an inbound pallet already carries an SSCC, some operations use it as the LPN, which saves a label as long as the pallet stays intact.
Choosing a symbology: Code 128, QR code or DataMatrix
Pick the barcode type by what the label must hold and what will scan it. Code 128 is the default for warehouse labels: it encodes letters and digits compactly, every laser and imager scanner reads it, and it scans at long range when printed large. Use it for location codes, LPNs and internal SKU labels.
2D codes hold more data in less space and read from any angle, but they need an imager scanner or camera, not a laser. DataMatrix is the usual choice for small product marking and GS1 data on healthcare and cosmetics packs. QR codes suit web links, including GS1 Digital Link URLs, and are easy to scan with a phone camera.
Do not mix symbologies for the same kind of label. If all locations are Code 128 and all LPNs are Code 128 with a distinct prefix, operators and the system always know what they are scanning.
- Code 128: locations, LPNs, internal SKUs, long-range rack labels
- GS1-128: case and pallet labels carrying GTIN, lot, expiry and SSCC
- EAN-13 / UPC-A: consumer units, printed by the brand owner
- DataMatrix: small items, dense GS1 data, needs an imager
- QR code: URLs and phone-camera scanning
Thermal printers, ZPL and label stock
Warehouses print labels on thermal printers. Direct thermal printing uses heat-sensitive labels and no ribbon, which is cheap and suits shipping labels that only need to last a few weeks. Thermal transfer uses a ribbon to fuse ink onto the label, which lasts much longer and suits location labels, pallet labels and anything exposed to heat, light or abrasion.
Resolution matters for small barcodes. A 203 dpi printer handles shipping labels and large location labels. Choose 300 dpi or higher for small DataMatrix codes or dense GS1-128 labels. The common 4 x 6 inch (about 102 x 152 mm) label covers shipping labels and most pallet labels.
Most industrial label printers understand ZPL (Zebra Programming Language), a text format that describes the label. A minimal location label is a few lines: start with ^XA, position a field with ^FO, draw a Code 128 barcode with ^BC, add the data with ^FD A-01-02 ^FS, and end with ^XZ. Because ZPL is text, a warehouse system can generate it from data and send it straight to the printer, which removes manual label design from the daily routine.
Label placement and testing before go-live
Print a test batch and try it on the floor before you label the whole building. Scan each label type with every device you will use, at the distance and angle an operator will actually use, under the real lighting. A label that scans on the desk may fail on the top beam or through shrink wrap.
Leave a clear quiet zone on both sides of every linear barcode, keep bars perpendicular to the direction the scanner sweeps, and avoid curved surfaces and seams. For trading partner labels, a barcode verifier gives an objective print quality grade, which is worth having before a retailer rejects a delivery.
- Scan with each scanner model and camera device in use
- Test at real distance and height, including top rack levels
- Check scans through stretch wrap and in cold or humid areas
- Confirm the system rejects the wrong label type at each step
- Make sure anyone can reprint a damaged label quickly
How NextStock handles barcodes and labels
NextStock works with keyboard-wedge barcode scanners and camera scanning on compatible devices. At receiving it parses GS1 barcodes, reading GTIN, lot, expiry and serial from GS1-128 and DataMatrix application identifiers. Each product pack level (each, case, pallet) can hold its own barcode, and every location has a barcode and a printable label.
Labels are rendered as ZPL and sent directly to thermal printers through PrintNode or Zebra Browser Print, with a download fallback and a reprint history. You can print location, pallet and shipping labels, including GS1 SSCC pallet labels for B2B loads, and track containers with LPNs. See label printing for how printing is set up.
A practical NextStock guide. Adapt it to your operation and validate with your team.