Free generator

Free GS1-128 barcode generator

Type GS1 Application Identifiers in parentheses, such as (01) for a GTIN, (17) for an expiry date or (00) for an SSCC. The generator checks them, inserts the FNC1 characters and draws the barcode at GS1’s logistics sizes.

  • Free to use
  • No sign-up
  • No watermark
  • Personal and commercial use
  • Runs in your browser

GS1-128 Cartons and logistics

Free · runs in your browser
Barcode type
Retail products
Cartons and logistics
Internal labels
2D

Application Identifiers in parentheses, e.g. (01) GTIN, (17) expiry YYMMDD, (10) batch/lot, (00) SSCC. When to use GS1-128

3 elements encoded with FNC1 separators where needed.

A barcode is only as unique as its number: the same number always draws the same bars. For trade, use numbers licensed to your company; anyone can check who a GTIN belongs to in Verified by GS1 (how).

The preview also updates as you type.

Preview · printed sizeScale in mm

Black on white only: colored bars and backgrounds are a common cause of scan failures. Everything is drawn in your browser; nothing you type is sent anywhere.

Printed size

The width of the narrowest bar. Defaults follow GS1’s standard size for this type. Size and print settings explained

Download for your printer

SVG downloads at the printed size above, for design and label software. PNG for a 300 dpi printer (12 dots/mm): 6 printer dots per module, so X is 0.500 mm and the bars 32.08 mm tall; print it at 100% scale. Free for personal and commercial use, with no watermark. Test a printed sample with the scanner that will read it.

  • Free to use
  • No sign-up
  • No watermark
  • Personal and commercial use
  • Runs in your browser

GS1-128 at a glance

What it isCode 128 with FNC1 right after the start character, reserved for GS1 data
EncodesGS1 element strings: an Application Identifier (AI), then its data, repeated
CharactersGS1’s 82-character set: A–Z, a–z, 0–9 and 20 symbols; no spaces
LengthAt most 48 data characters, and at most 165.10 mm long including quiet zones
SeparatorsAn FNC1 after each AI whose length is not predefined, unless it is the last one
Check characterModulo 103, always present, never printed in the text
X-dimension0.495 to 1.016 mm for trade items in distribution; 0.495 to 0.940 mm for logistic units
Bar heightAt least 31.75 mm in general distribution
Quiet zonesAt least 10X on each side
TextThe data with each AI in parentheses, for example (01)09520123456788

These come from section 5.4 and symbol specification tables 2 and 5 of the GS1 General Specifications. GS1 US notes that GS1-128 barcodes can only be created with a GS1 Company Prefix membership: the GTINs and SSCCs inside must come from your own prefix.

A printed example

GTIN 09520123456788 (GS1’s demonstration prefix 952), expiry 31 December 2027 and batch ABC123. That is 32 data characters; the batch comes last, so no separator is needed.

What each setting does for GS1-128

  • Data. Write each element as (AI)value. The generator checks that predefined-length AIs have the right length, that (00), (01) and (02) have correct check digits, that dates such as (17) are real YYMMDD dates (day 00 is allowed and means the end of the month, except on regulated healthcare products since 1 January 2025), that lots and serials stay within 20 characters, and that only GS1’s 82 characters are used. Spaces are ignored, since GS1 data cannot contain them, and a value cannot contain parentheses, because they mark the AIs. It refuses more than 48 data characters, and warns when the symbol would be longer than 165.10 mm.
  • FNC1. Added after every element whose AI is not in GS1’s predefined-length table (such as 10, 21, 30 or 37), except the last. Put fixed-length elements first and you need fewer separators; GS1 recommends that order.
  • X-dimension and height. Start at 0.495 mm and 31.75 mm. The generator warns outside 0.495–1.016 mm and below 31.75 mm.
  • Text. Printed under the bars with the AIs in parentheses. The parentheses are not encoded; the scanner sends the AIs and data without them.

Common AIs

AIDataFormat
(00)SSCC, the serial number of a logistic unit18 digits
(01)GTIN of a trade item14 digits
(10)Batch or lot numberup to 20 characters
(17)Expiration dateYYMMDD
(21)Serial numberup to 20 characters
(37)Count of trade items in a logistic unitup to 8 digits

The Application Identifiers guide covers more of them and the date rules.

Common mistakes

  • Typing a 12- or 13-digit GTIN after (01). AI (01) always takes 14 digits; pad with leading zeros (09520123456788).
  • Putting a variable-length AI first without a separator. The generator adds the FNC1 for you; other tools may not, and the scanner then runs two fields together.
  • Making a symbol too long to scan. At 0.495 mm the example above is already 141.6 mm wide; split long data over two GS1-128 symbols.
  • Using a “GS1-128” for internal codes. Plain internal codes belong in Code 128, which has no FNC1 and no AI rules.

Worked example: an SSCC for a pallet label

  1. Build an SSCC from extension digit 0, GS1’s example company prefix 0614141 and serial reference 123456789, then type (00)006141411234567890. The generator confirms the check digit, 0.
  2. (00) has a predefined length, so no separator follows it. The symbol has 20 data characters and is 176 modules wide with its quiet zones: 87.1 mm at 0.495 mm.
  3. Print it at 203 dpi: the PNG uses 4 dots per module, 0.500 mm, with 32.13 mm bars. GS1 limits SSCC symbols to an X of 0.940 mm because of the 165.10 mm length limit (for the 176 modules here, 0.938 mm is the most that fits).

The full label layout is in GS1-128 and SSCC shipping labels.

Sources

  1. GS1: GS1 General Specifications Standard (Release 26.0) (accessed )
  2. ISO: ISO/IEC 15417:2007, Code 128 bar code symbology specification (amended by Amd 1:2026) (accessed )
  3. GS1 US: Types of Barcodes (accessed )

More tools for labels and numbers