GS1 Element String Builder
Put in application identifiers and their values; get back the string a barcode actually carries — with FNC1 separators where the specification wants them, and the brackets left out of the data where they belong.
🔒 Your data never leaves your browser — the string is built here.
Three strings, and only one of them is the data
(01)04006381333931(10)LOT-A is the human-readable interpretation. It is printed under the bars for people to read, and the brackets are never encoded. Put them into a barcode and every scanner reads two literal parentheses in the middle of your GTIN.
What the symbol carries is 01040063813339311 0LOT-A with an invisible FNC1
between variable-length fields — the ASCII group separator, character 29. This tool shows it as
<GS> so you can see where it sits, and copies the real character when you
use the copy button.
The separator rule, both halves of it
A variable-length element must be closed by FNC1 unless it is the last one. Encoders break this in both directions: leaving it out runs the batch number into the next AI, and adding a trailing one produces a symbol that is not conformant. Ordering matters too — putting the fixed-length identifiers first means no separators are needed in the middle at all.
Why this page shows a round-trip check
Every string built here is fed straight back into our GS1 parser and compared element by element with what you typed. A generator that cannot read back its own output has no business printing labels, so when the comparison fails the string is withheld rather than shown.
Every check this tool runs (12 rules)
The value and syntax checks are the same engine — and the same rule numbers — as the logistic label generator. A rule number is a promise to the reader, so it means one thing across this site.
Values and syntax
LGL-001 Nothing to encode
A logistic label needs at least the SSCC.
LGL-002 Unknown Application Identifier
Only AIs in the GS1 AI table are encoded — an unknown AI would produce a barcode receivers cannot parse.
LGL-003 Duplicate AI
Each Application Identifier may occur only once on a logistic label.
LGL-004 Wrong length for a fixed-length AI
Fixed-length AIs (SSCC = 18 digits, GTIN = 14) must match exactly.
LGL-005 Value too long or empty
Variable-length AI values must be non-empty and within their maximum.
LGL-006 Invalid YYMMDD date
Date AIs are YYMMDD. DD may be "00" to mean end-of-month for best-before/expiry dates.
LGL-007 Check digit fails
SSCC and GTIN carry a GS1 mod-10 check digit. A wrong one is rejected at every receiving scanner; the expected digit is shown.
LGL-008 Character outside the GS1 character set
Values must use GS1 CSET 82 characters (letters, digits, and a limited set of punctuation).
LGL-011 Over 48 data characters
A GS1-128 symbol carries at most 48 data characters, counting AIs and separator FNC1s (not the start, leading FNC1, check or stop characters).
Fix: Drop a field — usually the batch — or split data across two labels.
Building
GS1B-001 The encoded string does not parse back into what went in
Every string this tool builds is fed straight back into the GS1 parser and compared element by element with the input. If they differ, the output is withheld: a barcode that this site cannot read back is not one anybody else should have to.
Fix: This is a fault in the tool, not in your data — the input that produced it is worth reporting.
Source: yaktool self-check, not a GS1 rule: it is the round-trip property that makes a generator provable rather than merely plausible.
GS1B-002 FNC1 separators inserted after variable-length elements
A variable-length element must be terminated by FNC1 unless it is the last one in the string. Both halves of that rule get broken in practice: encoders that omit the separator run two fields together, and encoders that add a trailing one produce a non-conformant symbol.
GS1B-003 Predefined-length AIs moved to the front
AIs whose length is fixed by their first two digits need no separator, so putting them first removes FNC1 characters from the middle of the string and makes the symbol shorter. The data itself is unchanged — only the order of the elements.