# Universal Product Code

Last updated

The Universal Product Code (UPC; redundantly: UPC code) is a barcode symbology that is widely used worldwide for tracking trade items in stores.

## Contents

UPC (technically refers to UPC-A) consists of 12 numeric digits that are uniquely assigned to each trade item. Along with the related EAN barcode, the UPC is the barcode mainly used for scanning of trade items at the point of sale, per GS1 specifications. [1] UPC data structures are a component of GTINs and follow the global GS1 specification, which is based on international standards. But some retailers (clothing, furniture) do not use the GS1 system (rather other barcode symbologies or article number systems). On the other hand, some retailers use the EAN/UPC barcode symbology, but without using a GTIN (for products sold in their own stores only).

Research indicates that the adoption and diffusion of the UPC stimulated innovation and contributed to the growth of international retail supply chains. [2]

## History

Wallace Flint proposed an automated checkout system in 1932 using punched cards. Bernard Silver and Norman Joseph Woodland, a graduate student from Drexel Institute of Technology (now Drexel University), developed a bull's-eye-style code and applied for the patent in 1949. [3] [4]

In the 1960s and early 1970s, railroads in North America experimented with multicolor bar codes for tracking railcars, but this system was eventually abandoned [5] and replaced with a radio-based system called Automatic Equipment Identification (AEI).

In 1973, a group of trade associations from the grocery industry formed the Uniform Product Code Council (UPCC) which, with the help of consultants Larry Russell and Tom Wilson of McKinsey & Company, defined the numerical format that formed the basis of the Uniform Product Code. [6] Technology firms including Charegon, IBM, Litton-Zellweger, Pitney Bowes-Alpex, Plessey-Anker, RCA, Scanner Inc., Singer, and Dymo Industries/Data General, put forward alternative proposals for symbol representations to the council.[ citation needed ] The Symbol Selection Committee finally chose to implement the IBM proposal designed by George J. Laurer, but with a slight modification to the font in the human readable area.[ citation needed ]

The first UPC-marked item ever to be scanned at a retail checkout was a 10-pack (50 sticks) of Wrigley's Juicy Fruit chewing gum, purchased at the Marsh supermarket in Troy, Ohio, at 8:01 a.m. on June 26, 1974. [7] The NCR cash register rang up 67 cents. [8] The shopping cart also contained other barcoded items but the gum was the first one picked up at the checkout. The gum packet went on display at the Smithsonian Institution's American history museum in Washington, D.C. [9]

Murray Eden was a consultant on the team that created the Universal Product Code barcode. [10] [11] As Chairman of a committee of scientists at the Massachusetts Institute of Technology, he helped select a symbol that would endure the inevitable rush of technology that lay ahead. [12] He chose the font, and he came up with the idea to add numbers to the bottom, which is a failsafe system, in case the code reader is down. [13] [14]

## IBM proposal

Around late 1969, IBM at Research Triangle Park (RTP) in North Carolina assigned George Laurer to determine how to make a supermarket scanner and label. In late 1970, Heard Baumeister provided equations to calculate characters per inch achievable by two IBM bar codes, Delta A and Delta B. In February, 1971, Baumeister joined Laurer.

In mid 1971, William "Bill" Crouse invented a new bar code called Delta C. [4] It achieved four times the characters per inch as Delta B. Delta B compared bar widths to space width to code bits. This was extremely sensitive to ink spread where too much ink or pressure would cause both edges of a bar to spread outward and too little to cause them to shrink. To make it worse as bars spread spaces shrink and vice versa. Delta C achieved its higher performance by only using leading to leading or trailing to trailing edges which was unaffected by uniform ink spread. The code provided best performance when it had a defined character set with a fixed reference distance that spanned most or preferably all the character. In August, 1971, Crouse joined the scanner effort. After several months they had made no progress. They were aware of the RCA bull's eye label that could be scanned with a simple straight line laser scanner, but a readable label was far too large. Although Litton Industries proposed a bull's eye symbol cut in half to reduce the area, it was still too large and presented the same ink smear printing problems as the RCA symbol. The redundancy and checking ability were removed completely. They were also aware of the many proposals from around the world, none of which were feasible.

In the spring of 1972, Baumeister announced a breakthrough. He proposed a label with bars that were slightly longer than the distance across all bars that needed to be read in a single pass. This label could be scanned with a simple "X" scanner only slightly more complex than the straight line laser scanner. The next day Baumeister suggested if the label were split into two halves the bar lengths could be cut nearly in half. These two proposals reduced the area from the bull's eye by one third and then one sixth. The image to the right shows the label proposed by Baumeister. He did not specify any specific bar code as that was well understood. Except for the bar coding and ten digits the UPC label today is his proposal. Shortly after that Baumeister transferred to another area of RTP.

Laurer proceeded to define the details of the label and write a proposal. N.J. Woodland was assigned as planner for the project and aided Laurer with writing his proposal.

Laurer's first attempt with a bar code used Delta B. The resulting label size was about six inches by three inches which was too large. Crouse suggested that Laurer use his Delta C bar code and provided a copy of his patent that had a sample alphanumeric character set and rules to generate other size alphabets. This reduced the label size to about 1.5” x 0.9”. Later Laurer asked Crouse for assistance in how the scanner could detect a label. Together they defined guard bars and a definition of how to detect the label. The guard bars also provided identification for half label discrimination and training bars for the scanner threshold circuits. Laurer had a complete label definition and proceeded to write his proposal. [15]

Previously Crouse had an idea for a simple wand worn like a ring and bracelet. He decided to develop that wand to provide a demonstration of the label.[ citation needed ]

On December 1, 1972, IBM presented Laurer's proposal to the Super Market Committee in Rochester, Minnesota, the location where IBM would develop the scanner. During the presentation, Crouse gave a lab demonstration where he read UPC-like labels with his ring wand. In addition to reading regular labels, he read the large two-page centerfold label in the proposal booklet. He then turned to a page showing a photo of labeled items sitting on a table. The labels were small and flawed due to the resolution of the printed photo but the wand read many of them. This demonstration showed the robustness of the pure Delta C code. The proposal was accepted.

One month later, January 1, 1973 Crouse transferred back to IBM's Advanced Technology group, and Laurer remained with the full responsibility for the label.

Dymo Industries, makers of handheld printing devices insisted that the code be character independent,[ clarification needed ] so that handheld printing devices could produce the bar code in store if the items were not bar-coded by the manufacturers. Dymo's proposal was accepted by IBM and incorporated in IBM's latest proposal.

It was decided that the two halves of the label should have a different set of numeric characters. The character set Laurer derived from the Delta C patent used seven printable increments or units where two bars and two spaces would be printed. This yielded twenty combinations of characters, but there were two pairs that when read by Delta C rules yielded the same code for the pair. Since eighteen characters were not enough Laurer tried adding one unit to the character set. This yielded twenty-six Delta C characters which could provide the two sets of decimal characters but it also added fourteen percent to the width of the label and thereby the height. This would be a thirty percent increase in area or a label of 1.7”x1.03”. Laurer felt this was not acceptable. He returned to the original character set with twenty characters but four of those were two pairs with the same Delta C reading. He decided to use them all. To distinguish between the pairs he would measure one bar width in each of the pairs to distinguish them from each other. For each pair those bars would be one or two units wide. Laurer didn't apply Baumeister's equations to this set. He felt just one bar width measurement would not be too serious. As it turned out it would have required over fifty percent increase in width and height for an area increase of more than double. Laurer later admitted these four characters in each set were responsible for most of the scanner read errors.

Mechanical engineering and electronic circuit design commonly require worst case designs using known tolerances. Many engineers working with bar codes had little experience with such things and used somewhat intuitive methods. This was the cause of the poor performance of the Delta B code and quite likely the failure of RCA's bull's eye scanner.

The following table shows the workable labels, available in the early 1970s, with their sizes.

Label typeLabel dimensionsArea
Bull's eye with Morse CodeLargeLarge
Bull's eye with Delta B12.0 in (300 mm) diameter113.10 in2 (729.7 cm2)
Bull's eye with Delta A9.0 in (230 mm) diameter63.62 in2 (410.5 cm2)
Baumeister 1st w/ Delta B6.0 in × 5.8 in (150 mm × 150 mm)34.80 in2 (224.5 cm2)
Baumeister 2 halves w/ Delta B6.0 in × 3.0 in (152 mm × 76 mm)18.00 in2 (116.1 cm2)
Baumeister 2 halves w/ Delta A4.5 in × 2.3 in (114 mm × 58 mm)10.35 in2 (66.8 cm2)
Baumeister with Delta C1.5 in × 0.9 in (38 mm × 23 mm)1.35 in2 (8.7 cm2)

This is assuming a bull's eye with the same information and reliable readability.

## Composition

Each UPC-A barcode consists of a scannable strip of black bars and white spaces above a sequence of 12 numerical digits. No letters, characters or other content of any kind may appear on a UPC-A barcode. There is a one-to-one correspondence between 12-digit number and strip of black bars and white spaces, i.e. there is only one way to represent each 12-digit number visually and there is only one way to represent each strip of black bars and white spaces numerically.

The scannable area of every UPC-A barcode follows the pattern SLLLLLLMRRRRRRE, where S (start), M (middle), and E (end) guard patterns are represented the same way on every UPC-A barcode and the L (left) and R (right) sections collectively represent the 12 numerical digits that make each UPC-A unique. The first digit L indicates a particular number system to be used by the following digits. The last digit R is an error detecting check digit, that allows some errors to be detected in scanning or manual entry. The guard patterns separate the two groups of six numerical digits and establish the timing.

UPC-AUPC-E

UPC-A 042100005264 is equivalent to UPC-E 425261 with the "EOEEOO" parity pattern, which is defined by UPC-A number system 0 and UPC-A check digit 4.

### Formatting

UPC-A barcodes can be printed at various densities to accommodate a variety of printing and scanning processes. The significant dimensional parameter is called x-dimension (width of single module element). The width of each bar (space) is determined by multiplying the x-dimension and the module width (1, 2, 3, or 4 units) of each bar (space). Since the guard patterns each include two bars, and each of the 12 digits of the UPC-A barcode consists of two bars and two spaces, all UPC-A barcodes consist of exactly (3 × 2) + (12 × 2) = 30 bars, of which 6 represent guard patterns and 24 represent numerical digits.

The x-dimension for the UPC-A at the nominal size is 0.33 mm (0.013"). Nominal symbol height for UPC-A is 25.9 mm (1.02"). The bars forming the S (start), M (middle), and E (end) guard patterns, are extended downwards by 5 times x-dimension, with a resulting nominal symbol height of 27.55 mm (1.08"). This also applies to the bars of the first and last numerical digit of UPC-A barcode. UPC-A can be reduced or magnified anywhere from 80% to 200%.

A quiet zone, with a width of at least 9 times the x-dimension, must be present on each side of the scannable area of the UPC-A barcode. [16] [17] For a GTIN-12 number encoded in a UPC-A barcode, the first and last digits of the human-readable interpretation are always placed outside the symbol in order to indicate the quiet zones that are necessary for UPC barcode scanners to work properly.

## Encoding

The UPC-A barcode is visually represented by strips of bars and spaces that encode the UPC-A 12-digit number. Each digit is represented by a unique pattern of 2 bars and 2 spaces. The bars and spaces are variable width, i.e. 1, 2, 3, or 4 modules wide. The total width for a digit is always 7 modules; consequently, UPC-A 12-digit number requires a total of 7×12 = 84 modules.

A complete UPC-A is 95 modules wide: 84 modules for the digits (L and R sections) combined with 11 modules for the S (start), M (middle), and E (end) guard patterns. The S (start) and E (end) guard patterns are 3 modules wide and use the pattern bar-space-bar, where each bar and space is one module wide. The M (middle) guard pattern is 5 modules wide and uses the pattern space-bar-space-bar-space, where each bar and space is also one module wide. In addition, a UPC-A symbol requires a quiet zone (extra space of 9 modules wide) before the S (start) and after the E (end) guard patterns.

Encoding table for UPC-A barcode pattern SLLLLLLMRRRRRRE
Quiet
zone
S
(start)
L
(left numerical digit)
M
(middle)
R
(right numerical digit)
E
(end)
Quiet
zone
01234567890123456789

The UPC-A's left-hand side digits (the digits to the left of the M (middle) guard pattern) have odd parity, which means the total width of the black bars is an odd number of modules. On the contrary, the right-hand side digits have even parity. Consequently, a UPC scanner can determine whether it is scanning a symbol from left-to-right or from right-to-left (the symbol is upside-down). After seeing a S (start) or E (end) guard pattern (they are the same, bar-space-bar, whichever direction they are read), the scanner will first see odd parity digits, if scanning left-to-right, or even parity digits, if scanning right-to-left. With the parity/direction information, an upside-down symbol will not confuse the scanner. When confronted with an upside-down symbol, the scanner may simply ignore it (many scanners alternate left-to-right and right-to-left scans, so they will read the symbol on a subsequent pass) or recognize the digits and put them in the right order. There is another property in the digit encoding. The right-hand side digits are the optical inverse of the left-hand side digits, i.e. black bars are turned into white spaces and vice versa. For example, the left-hand side "4" is space×1 - bar×1 - space×3 - bar×2, meanwhile the right-hand side "4" is bar×1 - space×1 - bar×3 - space×2.

## Numbering

The number of UPC-A and UPC-E barcodes are limited by the standards used to create them.

UPC-A: (10 possible values per left digit ^ 6 left digits) × (10 possible values per right digit ^ 5 right digits) = 100,000,000,000.
UPC-E: (10 possible values per digit ^ 6 digits) × (2 possible parity patterns per UPC-E number) = 2,000,000.

### Number system digit

Below is description of all possible number systems with corresponding 12-digit UPC-A numbering schema LLLLLLRRRRRR, where L denotes number system digit and R check digit.

0–1, 6–9
For most products. The LLLLL digits are the manufacturer code (assigned by local GS1 organization), and the RRRRR digits are the product code.
2
Reserved for local use (store/warehouse), for items sold by variable weight. Variable-weight items, such as meats, fresh fruits, or vegetables, are assigned an item number by the store, if they are packaged there. In this case, the LLLLL is the item number, and the RRRRR is either the weight or the price, with the first R determining which (0 for weight).
3
Drugs by National Drug Code (NDC) number. Pharmaceuticals in the U.S. use the middle 10 digits of the UPC as their NDC number. Though usually only over-the-counter drugs are scanned at point of sale, NDC-based UPCs are used on prescription drug packages and surgical products and, in this case, are commonly called UPN Codes. [18]
4
Reserved for local use (store/warehouse), often for loyalty cards or store coupons.
5
Coupons. The LLLLL digits are the manufacturer code, the first three RRR are a family code (set by manufacturer), and the next two RR are a coupon code, which determines the amount of the discount. These coupons can be doubled or tripled.[ clarification needed ]

### Check digit calculation

The UPC includes a check digit to detect common data entry errors. For example, UPC-A codes choose the check digit ${\displaystyle x_{12}}$ to satisfy the check digit equation:

${\displaystyle (3x_{1}+x_{2}+3x_{3}+x_{4}+3x_{5}+x_{6}+3x_{7}+x_{8}+3x_{9}+x_{10}+3x_{11}+x_{12})\equiv 0{\pmod {10}}.}$

If an entered code does not satisfy the equation, then it is not a valid UPC-A.

The UPC-A check digit may be calculated as follows:

1. Sum the digits at odd-numbered positions (first, third, fifth,..., eleventh).
2. Multiply the result by 3.
3. Add the digit sum at even-numbered positions (second, fourth, sixth,..., tenth) to the result.
4. Find the result modulo 10 (i.e. the remainder, when divided by 10) and call it M.
5. If M is zero, then the check digit is 0; otherwise the check digit is 10 M.

For example, in a UPC-A barcode "03600029145x12", where x12 is the unknown check digit, x12 may be calculated by:

1. Sum the odd-numbered digits (0 + 6 + 0 + 2 + 1 + 5 = 14).
2. Multiply the result by 3 (14 × 3 = 42).
3. Add the even-numbered digits (42 + (3 + 0 + 0 + 9 + 4) = 58).
4. Find the result modulo 10 (58 mod 10 = 8 = M).
5. If M is not 0, subtract M from 10 (10 M = 10 8 = 2).

Thus, the check digit x12 is 2.

The check digit equation is selected to have reasonable error detection properties (see Luhn algorithm).

• UPC-A can detect 100% of single digit errors.
A single digit error means exactly one digit is wrong. Let the difference modulo 10 of the erroneous digit and the correct digit be d. The value of d cannot be zero because that means the digits are the same, but d can be any other value in {1, 2, 3, 4, 5, 6, 7, 8, 9}. If the error digit is in an odd position (weight 1), the left hand side of check digit equation changes by d and the equivalence is no longer zero. If the error digit is in an even position (weight 3), then the left hand side changes by 3d, but that change is also nonzero modulo 10, so the check digit equation is not satisfied.
• UPC-A can detect about 89% of transposition errors. Specifically, if and only if the difference between two adjacent digits is 5, the UPC-A can't detect their transposition.
1. If 2 neighboring digits are transposed, then one of the digits a will be weighted by 1, and the other digit b = a + d will be weighted by 3, where d is the difference between the two digits. If the digits were in their correct order, they would contribute
${\displaystyle 1a+3b=1a+3(a+d)=4a+3d}$
to the left hand side of the check digit equation. In the transposed order, they contribute
${\displaystyle 1b+3a=3a+1(a+d)=4a+d}$.
to the LHS. Subtracting the two contributions gives how much they change the LHS:
${\displaystyle (4a+3d)-(4a+d)=2d}$
An error will be detected as long as the modular change is nonzero; if 2d 0 modulo 10, then the change will not be detected. Consequently, only when the character difference d 5 will an error be undetected (when d 0 the degenerate "transposition" is not an error).
2. Next consider how often a transposition has a distance d of 5.
Here is the Table of d-transpositions for UPC-A barcodes, where ${\displaystyle d\in \{0,1,2,\ldots ,9\}:}$
Table of d-transpositions for UPC-A barcodes
d
0123456789
10 00 10 20 30 40 50 60 70 80 9
21 11 21 31 41 51 61 71 81 9
32 22 32 42 52 62 72 82 9
43 33 43 53 63 73 83 9
54 44 54 64 74 84 9
65 55 65 75 85 9
76 66 76 86 9
87 77 87 9
98 88 9
109 9
Sum1018161412108642
Row Sum contains the number of d-transpositions, therefore the proportion of non-detectable transposition errors is (ignoring the transpositions where d = 0):
${\displaystyle {\frac {10}{18+16+14+12+10+8+6+4+2}}={\frac {10}{90}}=11.111\ldots \%.}$

## Variations

UPC in its most common usage technically refers to UPC-A.

Other variants of the UPC exist:

• UPC-B is a 12-digit version of UPC with no check digit, developed for the National Drug Code (NDC) and National Health Related Items Code. [19] [ failed verification ] It has 11 digits plus a 1-digit product code, and is not in common use. [20]
• UPC-C is a 12-digit code with a product code and a check digit; not in common use. [20]
• UPC-D is a variable length code (12 digits or more) with the 12th digit being the check digit. These versions are not in common use.
• UPC-E is a 6-digit code, that has its equivalent in UPC-A 12-digit code with number system 0 or 1.
• UPC-2 is a 2-digit supplement to the UPC used to indicate the edition of a magazine or periodical.
• UPC-5 is a 5-digit supplement to the UPC used to indicate suggested retail price for books.

### UPC-E

To allow the use of UPC barcodes on smaller packages, where a full 12-digit barcode may not fit, a zero-suppressed version of UPC was developed, called UPC-E, in which the number system digit, all trailing zeros in the manufacturer code, and all leading zeros in the product code, are suppressed (omitted). [21] This symbology differs from UPC-A in that it only uses a 6-digit code, does not use M (middle) guard pattern, and the E (end) guard pattern is formed as space-bar-space-bar-space-bar, i.e. UPC-E barcode follows the pattern SDDDDDDE. The way in which a 6-digit UPC-E relates to a 12-digit UPC-A, is determined by UPC-E numerical pattern and UPC-E parity pattern. It can only correspond to UPC-A number system 0 or 1, the value of which, along with the UPC-A check digit, determines the UPC-E parity pattern of the encoding. With the manufacturer code digits represented by X's, and product code digits by N's, then:

Last UPC-E digitUPC-E numerical patternUPC-A equivalent
0XXNNN00 or 1 + XX000-00NNN + check digit
1XXNNN10 or 1 + XX100-00NNN + check digit
2XXNNN20 or 1 + XX200-00NNN + check digit
3XXXNN30 or 1 + XXX00-000NN + check digit
4XXXXN40 or 1 + XXXX0-0000N + check digit
5XXXXX50 or 1 + XXXXX-00005 + check digit
6XXXXX60 or 1 + XXXXX-00006 + check digit
7XXXXX70 or 1 + XXXXX-00007 + check digit
8XXXXX80 or 1 + XXXXX-00008 + check digit
9XXXXX90 or 1 + XXXXX-00009 + check digit

For example, a UPC-E 654321 may correspond to the UPC-A 065100004327 or 165100004324, depending on the UPC-E parity pattern of the encoded digits, as described next:

UPC-A
check digit
UPC-E parity pattern for UPC-A

number system 0

UPC-E parity pattern for UPC-A

number system 1

0EEEOOOOOOEEE
1EEOEOOOOEOEE
2EEOOEOOOEEOE
3EEOOOEOOEEEO
4EOEEOOOEOOEE
5EOOEEOOEEOOE
6EOOOEEOEEEOO
7EOEOEOOEOEOE
8EOEOOEOEOEEO
9EOOEOEOEEOEO
Encoding table for UPC-E barcode pattern SDDDDDDE
S
(start)
O
(odd parity digit)
E
(even parity digit)
E
(end)
01234567890123456789

3-2-1-1

2-2-2-1

2-1-2-2

1-4-1-1

1-1-3-2

1-2-3-1

1-1-1-4

1-3-1-2

1-2-1-3

3-1-1-2

1-1-2-3

1-2-2-2

2-2-1-2

1-1-4-1

2-3-1-1

1-3-2-1

4-1-1-1

2-1-3-1

3-1-2-1

2-1-1-3

UPC-E 654321 with "EOEOEO" parity pattern (UPC-A 065100004327) would be encoded as

1-1-1  4-1-1-1  1-2-3-1  2-3-1-1  1-4-1-1  2-2-1-2  2-2-2-1  1-1-1-1-1-1.

The barcode would look like this:

### EAN-13

The EAN-13 was developed as a superset of UPC-A, adding an extra digit to the beginning of every UPC-A number. This expanded the number of unique values theoretically possible by ten times to 1 trillion. EAN-13 barcodes also indicate the country in which the company that sells the product is based (which may or may not be the same as the country in which the good is manufactured). The three leading digits of the code determine this, according to the GS1 country codes. Every UPC-A code can be easily converted to the equivalent EAN-13 code by prepending 0 digit to the UPC-A code. This does not change the check digit. All point-of-sale systems can now understand both equally.

EAN-8 is an 8-digit variation of the EAN barcode.

UPC usage notes:

• All products marked with an EAN will be accepted in North America currently, in addition to those already marked with a UPC.
• Products with an existing UPC do not have to be re-marked with an EAN.
• In North America, the EAN adds 30% more codes, mainly by adding digits 10 through 12 to the UPC digits 00 through 09. This is a powerful incentive to phase out the UPC.

## Related Research Articles

A barcode or bar code is a method of representing data in a visual, machine-readable form. Initially, barcodes represented data by varying the widths and spacings of parallel lines. These barcodes, now commonly referred to as linear or one-dimensional (1D), can be scanned by special optical scanners, called barcode readers, of which there are several types. Later, two-dimensional (2D) variants were developed, using rectangles, dots, hexagons and other patterns, called matrix codes or 2D barcodes, although they do not use bars as such. 2D barcodes can be read using purpose-built 2D optical scanners, which exist in a few different forms. 2D barcodes can also be read by a digital camera connected to a microcomputer running software that takes a photographic image of the barcode and analyzes the image to deconstruct and decode the 2D barcode. A mobile device with an inbuilt camera, such as smartphone, can function as the latter type of 2D barcode reader using specialized application software.

Code 39 is a variable length, discrete barcode symbology.

A check digit is a form of redundancy check used for error detection on identification numbers, such as bank account numbers, which are used in an application where they will at least sometimes be input manually. It is analogous to a binary parity bit used to check for errors in computer-generated data. It consists of one or more digits computed by an algorithm from the other digits in the sequence input.

PDF417 is a stacked linear barcode format used in a variety of applications such as transport, identification cards, and inventory management. "PDF" stands for Portable Data File. The "417" signifies that each pattern in the code consists of 4 bars and spaces in a pattern that is 17 units (modules) long. The PDF417 symbology was invented by Ynjiun P. Wang at Symbol Technologies in 1991. It is defined in ISO standard 15438.

Code 128 is a high-density linear barcode symbology defined in ISO/IEC 15417:2007. It is used for alphanumeric or numeric-only barcodes. It can encode all 128 characters of ASCII and, by use of an extension symbol (FNC4), the Latin-1 characters defined in ISO/IEC 8859-1.. It generally results in more compact barcodes compared to other methods like Code 39, especially when the texts contain mostly digits.

A QR code is a type of matrix barcode invented in 1994 by the Japanese automotive company Denso Wave. A barcode is a machine-readable optical label that contains information about the item to which it is attached. In practice, QR codes often contain data for a locator, identifier, or tracker that points to a website or application. A QR code uses four standardized encoding modes to store data efficiently; extensions may also be used.

Interleaved 2 of 5 (ITF) is a continuous two-width barcode symbology encoding digits. It is used commercially on 135 film, for ITF-14 barcodes, and on cartons of some products, while the products inside are labeled with UPC or EAN.

A Data Matrix is a two-dimensional code consisting of black and white "cells" or dots arranged in either a square or rectangular pattern, also known as a matrix. The information to be encoded can be text or numeric data. Usual data size is from a few bytes up to 1556 bytes. The length of the encoded data depends on the number of cells in the matrix. Error correction codes are often used to increase reliability: even if one or more cells are damaged so it is unreadable, the message can still be read. A Data Matrix symbol can store up to 2,335 alphanumeric characters.

The Global Trade Item Number (GTIN) is an identifier for trade items, developed by GS1. Such identifiers are used to look up product information in a database which may belong to a retailer, manufacturer, collector, researcher, or other entity. The uniqueness and universality of the identifier is useful in establishing which product in one database corresponds to which product in another database, especially across organizational boundaries.

The International Article Number is a standard describing a barcode symbology and numbering system used in global trade to identify a specific retail product type, in a specific packaging configuration, from a specific manufacturer. The standard has been subsumed in the Global Trade Item Number standard from the GS1 organization; the same numbers can be referred to as GTINs and can be encoded in other barcode symbologies defined by GS1. EAN barcodes are used worldwide for lookup at retail point of sale, but can also be used as numbers for other purposes such as wholesale ordering or accounting. These barcodes only represent the digits 0–9, unlike some other barcode symbologies which can represent additional characters.

George Joseph Laurer III was an American engineer for IBM at Research Triangle Park in North Carolina. He published 20 bulletins, held 28 patents and developed the Universal Product Code (UPC) in the early 1970s. He devised the coding and pattern used for the UPC, based on Joe Woodland's more general idea for barcodes.

GS1 DataBar is a family of symbols most commonly seen in the GS1 DataBar Coupon. Formerly known as Reduced Space Symbology (RSS-14), this family of barcodes include:

Codabar is a linear barcode symbology developed in 1972 by Pitney Bowes Corp. It and its variants are also known as Codeabar, Ames Code, NW-7, Monarch, Code 2 of 7, Rationalized Codabar, ANSI/AIM BC3-1995 or USD-4. Although Codabar has not been registered for US federal trademark status, its hyphenated variant Code-a-bar is a registered trademark.

MSI is a barcode symbology developed by the MSI Data Corporation, based on the original Plessey Code symbology. It is a continuous symbology that is not self-checking. MSI is used primarily for inventory control, marking storage containers and shelves in warehouse environments.

Paper data storage refers to the use of paper as a data storage device. This includes writing, illustrating, and the use of data that can be interpreted by a machine or is the result of the functioning of a machine. A defining feature of paper data storage is the ability of humans to produce it with only simple tools and interpret it visually.

The EAN-2 is a supplement to the EAN-13 and UPC-A barcodes. It is often used on magazines and periodicals to indicate an issue number.

Plessey Code is a 1D linear barcode symbology based on pulse width modulation, developed in 1971 by The Plessey Company plc, a British-based company. It is one of the first barcode symbology, and is still used in some rare libraries and for shelf tags in retail stores, in part as a solution to their internal requirement for stock control. The system was first used in the early 1970s by J.Sainsbury to identify all of its products on supermarket shelves for its product restocking system.

The GS1 Databar Coupon code has been in use in retail industry since the mid-1980s. At first, it was a UPC with system ID 5. Since UPCs cannot hold more than 12 digits, it required another bar code to hold additional information like offer code, expiration date and household ID numbers. Therefore, the code was often extended with an additional UCC/EAN 128 bar code. EAN 13 was sometimes used instead of UPC, and because it starts with 99, it was called the EAN 99 coupon barcode, and subsequently GS1 DataBar. After more than 20 years in use, there is now a need to encode more data for complex coupons, and to accommodate longer company IDs, so the traditional coupon code has become less efficient and sometimes not usable at all.

Industrial 2 of 5. is a variable length, discrete, two width symbology. Industrial 2 of 5 is a subset of two-out-of-five codes.

Matrix 2 of 5 is a variable length, discrete, two width symbology. Matrix 2 of 5 is a subset of two-out-of-five codes. Unlike Industrial 2 of 5 code, Matrix 2 of 5 can encode data not only with black bars but with white spaces.

## References

1. "GS1 BARCODE CHART". GS1 US . April 3, 2013.
2. Basker, Emek; Simcoe, Timothy (2021). "Upstream, Downstream: Diffusion and Impacts of the Universal Product Code". Journal of Political Economy. doi:10.1086/712762. ISSN   0022-3808.
3. USpatent 2612994,Woodland, Norman J.& Bernard Silver,"Classifying Apparatus and Method",issued October 7, 1952
4. "UPC - The Transformation of Retail" . Retrieved April 28, 2016.
5. "A Brief History of the Bar Code". Esquire. 153 (3): 42. March 2010. Archived from the original on June 1, 2016.
6. "Our innovative history – McKinsey firsts". mckinsey.com. 2013. Archived from the original on October 12, 2013. (see slide 10 of 18)
7. Nelson, Benjamin (1997). Punched Cards to Bar Codes: A 200 Year Journey with Descriptions of over 260 Codes. Peterborough, N.H.: Helmers Publishing. ISBN   978-091126112-7.
8. Alfred, Randy (June 26, 2008). "June 26, 1974: By Gum! There's a New Way to Buy Gum". Wired . Archived from the original on August 24, 2010.
9. Heller, Nathan. "Scanning Species". Harvard Magazine . September–October 2005.
10. "Oral-History:Murray Eden - Engineering and Technology History Wiki". ethw.org. November 10, 1999. Retrieved January 4, 2021.
11. Quality, National Commission on Productivity and Work (1975). Technology Applied to the Food Industry: A Preliminary Report. National Commission on Productivity and Work Quality. p. 15.
12. Haberman, Alan L. (2001). Twenty-five Years Behind Bars: The Proceedings of the Twenty-fifth Anniversary of the U.P.C. at the Smithsonian Institution, September 30, 1999. Harvard University Wertheim Publications Committee. pp. 74, 108. ISBN   978-0-674-00657-7.
13. Casanova, Stephanie. "Murray Eden, a biomedical engineer with a love of singing, dies in Tucson at 99". Arizona Daily Star. Retrieved January 14, 2021.
14. Roth, Brad (April 17, 2020). "Murray Eden". Medium. Retrieved January 14, 2021.
15. "Alumni Hall Of Fame Members". University of Maryland Alumni Association. The University of Maryland. 2005. Archived from the original on June 23, 2007. Retrieved June 10, 2009. After graduating from Maryland in 1951, George Laurer joined IBM as a junior engineer and worked up the ranks to senior engineer. In 1969, he returned to the technical side of engineering and was later assigned the monumental task of designing a code and symbol for product identification for the Uniform Grocery Product Code Council. His solution—the Universal Product Code—radically changed the retail world. Since then, he has enhanced the code by adding a 13th digit.
16. rainman_63 (April 6, 2005). "Drawing UPC-A Barcodes with C#". codeproject.com.
17. "Barcodes for Pharmaceuticals and Surgical Products". SimplyBarcodes.com.
18. "NHRIC (National Health Related Items Code)". HealthData. U.S. Department of Health & Human Services.
19. "Bar Code 1: A Web Of Information About Bar Code UPC and EAN Bar Code Page". Adams Communications. June 20, 2013.
20. "UPC-A Symbology – UPC-E background information and UPC-A to UPC-E conversion". barcodeisland.com. Retrieved January 21, 2013.
• US 3832686,Bilgutay, Ilhan M.,"Bar Code Font",published May 11, 1972,issued August 27, 1974
• US 3145291,Brainerd, H. B.,"Identification System",published July 2, 1959,issued April 18, 1964  Railroad bar code.
• US 3617707,Shields, Charles B.&Roelif Stapelfeldt,"Automatic car identification system",published August 17, 1967,issued November 2, 1971
• US 3723710,Crouse, William G.&John E. Jones,"Method and Device for Reading and Decoding a High Density Self-Clocking Bar Code",published June 28, 1971,issued March 27, 1973