The Universal Product Code symbology is used throughout the U.S. and Canadian grocery industry and has expanded into general retail as well.

In its standard version (UPC-A), 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, 6 and 7 are for regular UPC codes.

2 is for random weight items, e.g. meat, marked in-store.

3 is for National Drug Code and National Health Related Items.

4 is for in-store marking of non-food items.

5 is for coupon use.

1,8 and 9 are not used at present.

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 human-readable 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 UPC-A, there is another UPC symbol in common use – the UPC-E or zero-suppressed symbol.

The UPC-E 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 re-constructed from the shortened form. Only UPC codes using number set 0 and with sufficient zeros can be shortened to UPC-E 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 00000-00999 could be shortened to UPC-E. 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. 12100-00745 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 00000-00099 could be shortened to

UPC-E.

e.g. 12500-00081 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 00000-0009 could be shortened to

UPC-E.

e.g. 12390-00007 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 UPC-E codes available.

e.g. 12345-00008 becomes 123458

The check digit for the UPC-E 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 1-6 are numbered across the top)

Check | 1 | 2 | 3 | 4 | 5 | 6 |

Character | ||||||

0 | E | E | E | O | O | O |

1 | E | E | O | E | O | O |

2 | E | E | O | O | E | O |

3 | E | E | O | O | O | E |

4 | E | O | E | E | O | O |

5 | E | O | O | E | E | O |

6 | E | O | O | O | E | E |

7 | E | O | E | O | E | O |

8 | E | O | E | O | O | E |

9 | E | O | O | E | O | E |

The UPC symbology allows for supplementary codes to be added to the main code. These add-ons 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 in-house function.