Code Smith

GS1-128 Barcode Generator

The barcode on the shipping label. GS1-128 carries structured supply-chain data — a GTIN, a batch number, an expiry date — each tagged with the GS1 Application Identifier that says what it is.

Underneath it is ordinary Code 128, so any scanner will read the characters back. Only a GS1-aware system interprets them as fields. That distinction decides what to expect at the receiving end: the bars are universal, the meaning is a shared agreement, and the symbol gets wider with every field you add.

Used for
  • Shipping labels
  • Pallet and carton marking
  • Batch and lot tracking
  • Expiry dates
  • Warehouse logistics

Content

A GS1 element string, e.g. (01)09501101530003(17)210531(10)ABC123

Application Identifiers

Composite component

Printed above the bars as a CC-A or CC-B component. Leave empty for none.

Size

300
2

Colors

Human-readable text

8

Orientation

Preview

Enter content to generate GS1-128

About GS1-128

The logistics workhorse — Code 128 carrying GS1 Application Identifiers on pallets, cartons and shipping labels. Also known as EAN-128 and UCC-128.

A GS1 element string, e.g. (01)09501101530003(17)210531(10)ABC123

What is GS1-128?

GS1-128 is Code 128 with an agreement attached. The bars are ordinary Code 128; what makes it GS1-128 is an FNC1 character in the first position, which tells the scanner that everything following is a GS1 element string — a run of Application Identifiers, each a two-to-four digit code declaring what the value after it means. (01) introduces a GTIN, (17) an expiry date, (10) a batch number. That is the whole difference: the symbology is the same, the shared vocabulary is not, which is why a receiving system can read a pallet label it has never seen before and know which digits are the expiry date.

Technical characteristics

Character set
Full ASCII, through Code 128 subsets A, B and C
Data syntax
GS1 Application Identifiers, FNC1 in first position
Capacity
48 data characters per symbol under the GS1 General Specifications
Check digit
Code 128 modulo 103, calculated by the encoder
Human-readable text
Required by GS1, with each Application Identifier shown in brackets

Reading an element string

A GS1-128 label looks like one long number until you know where the joins are. The brackets printed under the bars are the map, and they are not encoded in the symbol itself: they exist so a human can see where one field ends and the next begins.

AIValueMeans
0109501101020917The GTIN of the item in the case
17260930Expiry date, 30 September 2026
10ABC123Batch or lot number
The element string (01)09501101020917(17)260930(10)ABC123, taken apart

Where the separators go, and where they do not

Some Application Identifiers introduce a fixed-length value and some do not. A GTIN under (01) is always fourteen digits, so a scanner counts and moves on. A batch number under (10) can be one character or twenty, so it has to be terminated by an FNC1 separator whenever anything follows it.

That gives you a free optimization and one trap. The optimization: put the variable-length fields last, and you pay for no separators at all. The trap: reorder an existing label so a variable-length field moves into the middle, and the symbol gets longer even though the data did not change.

Printing it on a corrugated case

Most GS1-128 symbols end up on board, which is the least forgiving common substrate there is. Ink spreads into the spaces, the flutes leave ridges, and the label is read by a fixed scanner at speed rather than by someone lining it up.

  • Ask the printer for their bar width reduction figure for that press and stock, and apply it. On flexographic printing onto board the compensation is substantial.
  • Give the bars height. A tall symbol tolerates a scan line that crosses at an angle, which is what a fixed scanner on a conveyor produces.
  • Print the human-readable text with the brackets. GS1 requires it, and it is what lets somebody key the number in when the label is damaged.

GS1-128 FAQs

What is the difference between Code 128 and GS1-128?

The symbology is identical. GS1-128 adds a rule about the data: an FNC1 in the first position, and content structured as GS1 Application Identifiers. A scanner reads both as Code 128; only a GS1-aware system interprets the identifiers.

Do I have to type the brackets?

Yes. The brackets mark where an Application Identifier starts and ends, and the encoder uses them to place the FNC1 separators correctly. The Application Identifier buttons above the field insert them for you.

Can I add a 2D composite component?

Yes. Enter the extra element string in the composite field and the generator draws a CC-A or CC-B component above the linear bars, as a single composite symbol.

Why is the human-readable line important?

Because scanners fail. The GS1 General Specifications require the element string to be printed under the symbol so a person can key it in when the barcode will not read.

What happens if I use the wrong Application Identifier?

The symbol still scans. Nothing in the barcode checks that (17) really introduces an expiry date, so a mistyped identifier produces a label that reads perfectly and means something else: a batch number filed as a serial, a date read as a weight. It is the one error class here that no scanner will catch for you, which is why the human-readable line under the bars matters: a person can see that the brackets do not match the values.

Related formats