Free downloads · encoded on your device

GS1-128 barcode generator

Create a GS1-128 symbol from supported application identifiers. Enter fields using parentheses, such as a GTIN followed by a lot number, and verify the full decoded data before printing.

Barcode

·

Try:

Size
Appearance

Keep dark bars on a light background — scanners read contrast, not colour.

Preview

Your barcode appears here.

Optional support

Support the project

If this free generator saves you time, you can support its continued development through Stripe.

Structured data for logistics

GS1-128 uses Code 128 with GS1-specific control characters and application identifiers, usually shortened to AIs. Each AI explains the meaning and permitted structure of the following data. A field can represent a GTIN, an expiry date, a lot number or another supported attribute. A plain Code 128 barcode containing similar-looking digits is not automatically GS1-128.

Enter the AI in parentheses followed by its value, then the next AI and value. Parentheses make the input readable, but they are not ordinary data characters in the encoded message. The encoder supplies the initial FNC1 and required separators between supported variable-length fields. The receiving scanner must interpret those control characters correctly.

This is a limited generator rather than a complete implementation of every GS1 application identifier. It validates the AIs implemented in its engine and rejects unsupported fields. Do not replace an unknown AI with a similar one merely to obtain a barcode. Check the receiver’s specification, including field lengths, date interpretation and whether it expects a GTIN, SSCC or another key.

Check the data and label layout

Use real allocated identifiers when preparing production labels. Check-digit validation confirms arithmetic, not ownership. This website does not register numbers with GS1 or establish relationships between a company, product, batch and expiry date. Generated UPC and EAN numbers elsewhere on this site are not registered either. Keep your authoritative records in the system that manages those identifiers.

A scanner may display a symbology identifier, an ASCII group separator or a human-friendly interpretation of the fields. Therefore compare the structured result rather than expecting the exact parentheses you typed to appear in every scanning application. Test both field values and field boundaries. A missing separator can cause subsequent data to be interpreted as part of the preceding lot or serial number.

Long messages produce wide symbols. Choose the required data first, then allocate sufficient label space for appropriate module width, bar height and quiet zones. Do not stretch one dimension independently. Use SVG for artwork and print at a deliberate final size. Black bars on an opaque white background are a practical starting point; nearby borders, glossy film and curved surfaces still need testing.

Print a physical sample and scan it with the intended equipment into the intended software. Ask the receiving partner to confirm the result before producing a large batch. A readable symbol alone is not a complete compliant logistics label: required text, identifier allocation, placement, dimensions and print-quality verification are separate responsibilities.

Last reviewed: · How we maintain these tools

Questions

Frequently asked questions

Is this the same as ordinary Code 128?

No. GS1-128 adds FNC1 and structured application identifiers. Choose the format requested by the receiver.

Are parentheses encoded?

They are input notation around AIs. The encoder converts the supported fields to the appropriate GS1 structure and separators.

Does this support every GS1 AI?

No. Unsupported AIs are rejected. Use a specialist workflow if your required fields are not implemented here.