Your input stays in this browser.
Application identifiers are a grammar
GS1-128 is Code 128 plus a defined grammar. Parentheses in this form are for people: they separate application identifiers, or AIs, before the barcode is made. They are not encoded as data characters. AI 01 introduces a 14-digit GTIN, AI 17 a six-digit expiry date in YYMMDD order, and AI 10 a variable-length batch or lot. A scanner returns a compact element string; warehouse software gives the fields their business meaning.
Read the example field by field
The example starts with AI 01 and the GTIN 09501101530003. AI 17 then supplies 260630, meaning 30 June 2026 when the receiving application applies the date rule. AI 10 supplies LOT42. Because AI 10 has variable length, the encoder inserts the FNC1 separator before a following AI when one exists. Here it is last, so no trailing separator is required.
Why the GTIN is not a guessed number
The value after AI 01 includes its own GTIN check digit. The generator can verify its arithmetic, but it cannot allocate a company prefix, decide whether a trade item is sellable, or prove that a lot belongs to the item. Treat a check failure as a data problem upstream. Replacing one digit merely to make the bars render can make a physically readable label that points at the wrong stock record.
Fixed and variable fields behave differently
AI 17 is always six numeric digits. AI 10 accepts up to 20 characters and ends at FNC1 or at the end of the symbol. That distinction is why concatenating fields by eye is unsafe: 10LOT4217... has no reliable boundary unless the separator is present. The parser on this page shows each recognized field before it draws the symbol, so a missing parenthesis or overlong value becomes visible before artwork is exported.
A small formula that catches a common error
For a GTIN body, count from the right, multiply alternate digits by 3 and 1, add them, then use (10 - total mod 10) mod 10. For 0950110153000 the weighted total is 49, so the check digit is 1 and the complete GTIN is 09501101530001. A different allocation can be valid too; the formula establishes internal consistency, not ownership.
Use it for logistics data, not a retail shortcut
GS1-128 is common on pallet labels, healthcare logistics, traceability labels and distribution units because it can combine identity, lot, date and quantity. It is not interchangeable with EAN-13 or UPC-A, which are fixed retail representations. It also differs from ordinary Code 128: the visual bars may resemble it, but GS1-128 requires FNC1 and an AI syntax that a generic serial-number label does not carry.
Print the separator rules, not the parentheses
Human-readable interpretation may show parentheses around AIs, but the scanner payload uses FNC1 where a variable field needs a boundary. Do not type literal parentheses into a scanner configuration as though they were data. Preserve the exported SVG at its aspect ratio, leave quiet zones clear, and verify the proof with software that parses GS1 element strings rather than merely displaying the raw characters.
What makes a correct symbol fail
Thermal print gain can close narrow spaces; a carton seam can cut a bar; a dark border can invade the quiet zone. Data errors are different: an invalid date, a GTIN with a bad check digit, or a variable field placed before another AI without FNC1. This page reports syntax before drawing. A successful local read-back confirms that the generated SVG still carries the parsed element string, not that a particular trading partner accepts the allocation.
Keep the source record with the label
Store the original AI fields, the exported SVG and the intended scanner result together. That gives receiving staff a way to distinguish a print defect from a wrong batch, date or trade-item record. A barcode image is not a database. If a date or lot changes, create a new symbol from the source fields and retire the previous artwork instead of editing visible digits in a design program.
A receiving test with real fields
Before a rollout, print two controlled labels: one with the example GTIN, date and lot, and another with a variable-length lot followed by a further AI. Scan both into the same receiving screen that will be used in operation. The first proves ordinary field extraction; the second proves that FNC1 is preserved as a separator. A camera application that merely shows text is not enough evidence that the warehouse parser recognizes the separate fields.
Date values need business validation
AI 17 carries a compact date but does not state a time zone, a recall policy or whether the product may be sold on that date. The barcode generator validates six digits, not calendar plausibility or product policy. Keep expiry handling in the controlled business system. If an operator changes 260630 to 260631 to make a label look current, a technically encoded symbol can still carry an impossible date.
A practical export record
Name the artwork with a non-sensitive revision identifier and retain a text record of each AI and value. That record permits an independent scan result to be checked without transcribing bars from a printed carton. It also exposes a frequent production error: a correct GTIN combined with yesterday's lot. The web form remains local, but anyone holding the printed label can read the data carrier.
Keep the verification boundary clear
A final scan should be compared with the source fields, not merely accepted because a reader beeps. That distinction catches a valid GS1-128 symbol carrying a stale lot or date. Keep the scan log and the field record together for traceability.