Free GS1-128 Barcode Generator (SSCC, Batch, Expiry)
GS1-128 puts several pieces of supply chain data into one barcode, each marked by an Application Identifier (AI) in brackets: (01) for the GTIN, (17) for the expiry date, (10) for the batch, (00) for a pallet's SSCC. Type the AIs and values; check digits are added or checked for you.
Application Identifiers in brackets, each followed by its value, e.g. (01)09501101530003(10)AB-123.
The blank margin left and right of the bars, in modules (the width of the narrowest bar). GS1-128 needs at least 10.
Made in your browser; nothing you type is sent to QRdx. WebP and AVIF are encoded by QRdx's server when you pick them, and nothing is kept.
Where GS1-128 barcodes are used
Logistics labels on cases and pallets, and labels on fresh food, meat and medical supplies where a batch, an expiry date or a weight must travel with the GTIN.
The GS1 logistic label carries the pallet's SSCC, AI (00), as a GS1-128. Retail and logistics partners usually specify which AIs they want on it.
Do I need GS1 numbers for GS1-128?
For the GTIN in (01) and the SSCC in (00), yes: both are built from a GS1 company prefix. Batch numbers, dates and weights are your own data.
A GTIN is licensed, not bought outright: you join GS1 (or the GS1 organization in your country), get a company prefix and number your products from it. Large retailers and marketplaces check GTINs against GS1's registry, so numbers resold from someone else's prefix can be rejected.
GS1-128 input and check digit
What it takes
Application Identifiers in brackets, each followed by its value, e.g. (01)09501101530003(10)AB-123.
Example
(01)09501101530003(17)261231(10)AB-123- (01) 09501101530003
- GTIN of the product or case
- (17) 261231
- Expiry date (YYMMDD)
- (10) AB-123
- Batch or lot number
Write each AI in brackets followed by its value: (01)09501101530003(17)261231(10)AB-123. The brackets aren't encoded; they show where each field starts.
GTINs in (01) and (02) and SSCCs in (00) get their check digit added when you leave it off, or checked when you don't. The encoder also checks every value against GS1's rules: an unknown AI or an impossible date such as month 13 is refused.
A GS1-128 holds up to 48 characters of AIs and data. Put variable-length fields such as (10) batch last, so no separator is needed after them.
The check digit of 0950110153000, worked out
| Digit | 0 | 9 | 5 | 0 | 1 | 1 | 0 | 1 | 5 | 3 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Weight | ×3 | ×1 | ×3 | ×1 | ×3 | ×1 | ×3 | ×1 | ×3 | ×1 | ×3 | ×1 | ×3 |
| Product | 0 | 9 | 15 | 0 | 3 | 1 | 0 | 1 | 15 | 3 | 0 | 0 | 0 |
The products add up to 47. Adding 3 makes 50, the next multiple of 10, so the check digit is 3.
GS1-128 barcode size
| Example as SVG, PDF or EPS | 100.9 × 19.2 mm |
|---|---|
| Module (narrowest bar) | 0.353 mm |
| Bar height | 15 mm |
| Quiet zone | At least 10 modules each side; the generator starts with 10 |
- On GS1 logistic labels, GS1 asks for a module of 0.495 mm to 0.94 mm (0.495 mm is the target), bars at least 31.75 mm high and a barcode no longer than 165 mm with its quiet zones.
- The downloads use a 0.353 mm module and 15 mm bars, which suits small item labels. For a pallet or case label, set the bar height to 23 mm and enlarge the file to 141%: the module becomes 0.495 mm and the bars 32.4 mm. The example is then 142 mm long.
- Long data makes long barcodes: if it won't fit in 165 mm, split it over two GS1-128 barcodes, as GS1 logistic labels do.
GS1-128 barcode API
The same barcode is an image URL, with no API key: put it in an img tag, a label template or a product feed. It checks the value the way this page does, and allows 300 requests a minute per IP address. The barcode API docs list every option.
SVG image
https://api.qrdx.dev/v1/barcode?format=gs1-128&data=(01)09501101530003(17)261231(10)AB-123PNG, 3 pixels per module
https://api.qrdx.dev/v1/barcode?format=gs1-128&data=(01)09501101530003(17)261231(10)AB-123&type=png&scale=3In a web page
<img src="https://api.qrdx.dev/v1/barcode?format=gs1-128&data=(01)09501101530003(17)261231(10)AB-123" alt="GS1-128 (01)09501101530003(17)261231(10)AB-123" />GS1-128 barcode FAQ
What do (17) and (15) dates look like?
Six digits, YYMMDD: (17)261231 is an expiry of 31 December 2026. A day of 00 means the end of that month.
Can I add a serial number?
Yes, with AI (21), up to 20 characters. Put it last, or after other fixed-length fields, to keep the barcode short.
Why does my scanner show no brackets?
The brackets are only for people. Readers report the data with a symbology identifier (]C1) or none, and separate variable-length fields with an invisible GS character. The scan check here accepts all of these forms.
Other barcode types
All 11 barcode typesBarcodes are static: the data is in the bars, so they work offline and never expire. For a link people scan with a phone camera, use one of the QR code generators.