The Universal Product Code symbology is used throughout the U.S. and Canadian retail. UPCA barcodes carry GTIN12 numbers as defined by GS1 US. In its standard version (UPCA), the bar code consists of a five digit manufacturer number and a five digit product number. In addition there is a 1 digit number system identifier at the start of the code. The number system digit denotes the use of one of ten number systems defined by UPC: 0, 1 , 6, 7 and 8 are for regular UPC codes. 2 is for random weight items, e.g. meat, marked instore. 3 is for National Drug Code and National Health Related Items. 4 is for instore marking of nonfood items. 5 and 9 are for coupon use. The UPC symbol also has a check digit which is the last digit of the code and is calculated according to the algorithm used for EAN. As with EAN, UPC is described in terms of magnification factor as a percentage. The 100% code is the same size as a 100% EAN. The humanreadable characters for the number system character and the check digit are printed at a smaller size and separately from the other digits. There are a number of human readable character layouts in use currently. The HRC layout does not affect the encodation of the bar code, but does assist in visual identification and the grouping of human readable characters can aid in key entry if scanning is not used. The following are common layouts: As well as the standard UPCA, there is another UPC symbol in common use  the UPCE or zerosuppressed symbol. The UPCE is used on packages which would otherwise be too small for a bar code symbol. It actually represents a full UPC code and the full code can be reconstructed from the shortened form. Only UPC codes using number set 0 and with sufficient zeros can be shortened to UPCE codes. The form and number of zeros in the manufacturer numbers dictates how many product numbers are available. The rules are as follows: 1. If a manufacturer number ends in 000, 100 or 200, then three digits are allowed for the product code and only the first three digits of the manufacturer number are used. In such a case only the product numbers 0000000999 could be shortened to UPCE. The six digits are constructed from the first two digits of the manufacturers number followed by the last three digits of the item number, followed by the third digit of the manufacturers number. e.g. 1210000745 becomes 127451 2. If a manufacturer number ends in 300, 400, 500, 600, 700, 800 or 900 then two digits are allowed for the product code. The first three digits of the manufacturer number are used and a "3" is inserted after the product code. In such a case only the product numbers 0000000099 could be shortened to UPCE. e.g. 1250000081 becomes 125813 3. If a manufacturer number ends in 10, 20, 30, 40, 50, 60, 70, 80 or 90 then one digit is allowed for the product code. The first four digits of the manufacturer number are used and a "4" is inserted after the product code. In such a case only the product numbers 000000009 could be shortened to UPCE. e.g. 1239000007 becomes 123974 4. If the manufacturer number does not end in zero all five digits of the manufacturer number are used followed by one digit of product code. Only numbers 5  9 may be used. Therefore the manufacturer only has 5 UPCE codes available. e.g. 1234500008 becomes 123458 The check digit for the UPCE is calculated from the full length UPC code and is not directly encoded by a bar/space pattern. Instead it is derived from the parity of the rest of the bar code. Each of the numbers 0  9 can be represented by a bar/space pattern with a even number of dark bars or one with an odd number of dark bars according to an encodation table. The pattern of even parity and odd parity patterns tells the scanner which check digit has been used according to the following table: (character positions 16 are numbered across the top)
The UPC symbology allows for supplementary codes to be added to the main code. These addons may be 2 or 5 digits. They do not include a check character and have no bearing on the check calculation of the main code. The UPC supplementary codes were mainly intended for use on books and periodicals, but may also fulfil an inhouse function. 
Introduction
