Validating Barcode Data Content
We recently received an inquiry through the Barcode-Test website with this question: “Is it possible for two GS1-128 barcodes to have slightly different bar patterns, yet scan the exact same numbers?” Fascinating—and the answer is an emphatic “Yes, but…”
How can you determine the total data content in a barcode? If the very question puzzles you, allow me to explain. The lowly, ubiquitous UPC is not just a string of twelve encoded characters: the encoded data string begins with a start pattern, a center guard bar pattern, and a stop pattern at the end of the data string. These additional patterns do not contain any “intelligent” or representational (alpha or numeric) information, and have never been included in the displayed data set, yet they must be present for the barcode to work properly. For validation purposes it is very important to know that these hidden “characters” are present in the UPC barcode.
Barcodes have evolved far beyond a simple string of 12 numbers in a UPC (GS1 GTIN-12) code. Consider the complicated GS1-128 SSCC with multiple Flags or Application Identifiers of fixed or variable lengths to prefix data such as Batch, Lot Number, Best Before Date, Serial Number , Product Variant, etc; or consider the GS1 Databar Expanded Stacked (coupon code) symbology which must distinguish trade region currencies, product family codes, value codes, offer complexities such as “buy one get one” and offers that mix brands and products; every conceivable type of coupon offer must be correctly structured—each data set properly prefixed with an identifier and accurately sequenced in the encoded data.
The days when verification meant checking just the spectral and dimensional qualities of the printed image are long gone; perfectly printed barcodes with faulty data integrity are a potentially worse problem than poorly printed barcodes. And we’ve only mentioned 1D barcodes so far; the far greater data capacity of 2D symbologies such a Data Matrix can make this a vastly larger challenge.
On the face of it, this doesn’t seem like a major problem: you scan the barcode and the decoded information populates the display—you look at it and make sure it’s correct, right? Not exactly; Code 128, for example, is designed to conceal certain encoded information. The readout doesn’t tell you the data prefix, the function and subset, or subsequent application identifiers. Code 128 has been configured to not display check characters—it is impossible to view the entire data set on even the simplest of Code 128 symbols with a conventional scanner.

Thanks to Matt Swaim for contributing this image of two different Code 128 symbols with the same (apparent) decode.
Not all verifiers display the hidden characters in a barcode, and not all verifiers test for correct application identifiers or correct data sequencing within application identifiers. Worse still, not all verifier users know this and assume the passing ANSI or ISO grade includes data structure integrity. What to do?
We have a unique and inexpensive device that decodes virtually any symbol, 1D or 2D, and displays the entire data sequence including all hidden and implied characters. It is not a verifier, and it does not test for application identifier and sequencing, but it displays what’s there, and that’s an important first step.
For information on our new Barcode Scan Analyzer, click here.

John helps companies resolve current barcode problems and avoid future barcode problems to stabilize and secure their supply chain and strengthen their trading partner relationships.