How UPC Bar Codes Work

How is the Price Determined?

UPC label on a 3-liter bottle of Diet Coke
UPC label on a 3-liter bottle of Diet Coke
©2000 HowStuffWorks

As you can see, there is no price information encoded in a bar code. When the scanner at the checkout line scans a product, the cash register sends the UPC number to the store's central POS (point of sale) computer to look up the UPC number. The central computer sends back the actual price of the item at that moment.

This approach allows the store to change the price whenever it wants, for example to reflect sale prices. If the price were encoded in the bar code, prices could never change. On the other hand, not encoding a fixed price gives the store an easy way to rip off customers. When you hear about "scanner fraud" in the news, that is what the newsperson is talking about. It is incredibly easy for a store to mistakenly or purposefully overprice an item.

One thing you will notice if you start looking at UPC codes in detail is that the big manufactures have manufacturer IDs with lots of zeros in them. Here are a few:

  • Post - 043000
  • General Mills - 016000
  • Del Monte - 024000
  • Quaker Oats - 030000

Coke's manufacturer ID is 049000 (pictured above). However, if you look at can of Coke or most 2-liter bottles, you will find that the UPC code is much shorter than on a 3-liter bottle -- only eight digits total. Here's the bar code from a 2-liter bottle of Sprite:

Zero-suppressed UPC code on a bottle of Sprite Zero-suppressed UPC code on a bottle of Sprite
Zero-suppressed UPC code on a bottle of Sprite
©2000 HowStuffWorks

These short bar codes are called zero-suppressed numbers. There's a set of rules around forming zero-suppressed numbers from full numbers, but the basic idea is to leave out a set of four digits, all zeros. In the case of the Sprite UPC code, the 049 at the beginning is the first three digits of Coke's 049000 manufacturer ID. The 551 is the item number for this bottle of Sprite, shortened from 00551. The zero in the second-to-last digit is the fourth digit from Coke's manufacturer ID. The final digit is the normal check digit. The main reason for having zero-suppressed numbers is to create smaller bar codes for small product packages like 12-ounce cans.

The first digit of the manufacturer's identification number is special. It is called the number system character. The following data shows you what different number system characters mean:

  • 0 = Standard UPC number (must have a zero to do zero-suppressed numbers)
  • 1 = Reserved
  • 2 = Random-weight items (fruits, vegetables, meats, etc.)
  • 3 = Pharmaceuticals
  • 4 = In-store marketing for retailers (A store can set up its own code, but no other store will understand them.)
  • 5 = Coupons
  • 6 = Standard UPC number
  • 7 = Standard UPC number 
  • 8 = Reserved
  • 9 = Reserved

Here is an example of a pharmaceutical bar code (number system character 3), this one from a 4-ounce bottle of Selsun Blue dandruff shampoo: