GS1 barcode validator
Paste a GTIN, an SSCC or a GS1-128 element string with its application identifiers, and this tool checks the check digit, reads each AI and flags a wrong length or format. It runs in your browser; for a numeric string it also writes the ZPL and renders the GS1-128 through the OpenZPL API.
1GS1 data
Try an example:
2Result
| AI | Means | Value | Check |
|---|
How to use it
- Paste the number or element string: a bare GTIN or SSCC, or AIs in brackets like (01)00614141123452(17)271231.
- Read the result: each application identifier with its name and value, and the check-digit result.
- Fix anything flagged in red — a wrong check digit, a bad length or an unknown AI.
- Copy the ZPL the tool writes, or open the GS1-128 in the viewer, to print the barcode.
What it checks
- The GS1 mod-10 check digit of a GTIN-8, 12, 13 or 14 and of an 18-digit SSCC.
- Each application identifier (AI) in an element string, its name, and whether its value has the right length and format.
- A GTIN inside an (01) or an SSCC inside an (00), including its own check digit.
Related
Questions
How do I check a GTIN or SSCC check digit?
Paste the full number here. The tool recomputes the GS1 mod-10 check digit over the other digits and tells you whether the last digit matches, for GTIN-8, 12, 13 and 14 and for the 18-digit SSCC.
What is an application identifier (AI)?
A two-to-four digit prefix that says what the next value is: `01` a GTIN, `00` an SSCC, `10` a batch, `17` a best-before date, `21` a serial number. The validator knows the common ones and checks each value's length and format.
Does it make the barcode too?
For an all-numeric element string it writes the ZPL — `^BC` with the data starting `>;>8` (subset C and FNC1) — and renders the GS1-128 through the API. A string with letters validates but isn't rendered yet, because it needs barcode subset switching.
Is my data sent anywhere?
The validation runs entirely in your browser. Only when it renders the preview does the numeric element string go to the OpenZPL API, like any other render; nothing is stored.