I’m just wondering about barcodes. It doesn’t seem like there could possibly be enough 12 digit combinations for all the products available. Can someone shed some light?
1,000,000,000,000 (1 trillion) combinations isn’t enough for you?
Just what I was going to say.
Barcodes are the same for each product in a line, they aren’t unique for each individual product.
Yeah I guess a trillion should probably do the trick
Bar Codes ave a country prefixs, so no country can have more than 100-billion of them. However, that is not rigid, and any marketer can register his bar code in any country, but they usually don’t. So you cannot unfailingly use the bar code to punish China/
UPC-A codes have check digits, so I think all the math so far is off by a factor of 10.
100 billion. 1 trillion. What’s a power of ten between friends? Isn’t 100 billion enough for you?
I believe what you are saying is that they are unique to a product but not to an item, (i.e., they are not serial numbers).
Beyond that, they do not even have to be unique to a product line. I deal with an ice cream producer that uses the same UPC for every one of their flavors. Some brewers often use a single “seasonal” UPC for their Christmas, Spring, Summer, and Fall beers and some bakeries use a single UPC when they put out special products for Valentine’s Day, Memorial Day, Independence Day, Christmas, etc.
And, of course, those are U.S. and Canadian UPCs. Europe’s European Article Number (EAN) has thirteen digits instead of twelve.
I have never encountered a “country” code. (There could only be 10 of them, anyway.) The typical first digits of U.S. UPCs are outlined in this Wikipedia article.
If EANs have a country code, I have not encountered it.
I love that movie.
When UPC merged with EAN (13 chars, Europe, Japan, etc.) a zero was assumed on the left of the 12 char UPC so POS terminals could easily adjust and read both UPC and EAN.
With the transition to GTIN (14 chars), same thing, add another zero to the left for UPC.
There is a country code within GTIN.
After the country code there is a vendor code (of varying length) and then a sequential number.
There is absolutely a finite number of numbers and the standard is to avoid re-using a number for 3 years. Some companies churn through a large number of UPC’s each year and do re-use numbers because GS1 isn’t going to give a single company the bulk of the available vendor ID’s.
Here’s the list of country codes for GTIN:
The guy that created UPC’s etc. designed in a country code from the beginning with US/Canada having a zero but the UCC took his design and created confusion with their original standards for human readable information and what should be stored in the database.
When he worked with Europe/EAN the country code was made explicit.
If you compare an EAN barcode for country 0 and a UPC you will see the barcodes are identical, the only difference is the human readable portion chosen by UCC.
I guess they don’t have to be unique, but I thought that they were used for inventory control. Doesn’t a store need to know if it needs to order more Rocky Road but is overstocked with chocolate?
I don’t know how it works into everything else, but barcodes on items that are priced by weight have the price worked into the barcode as well. Take a look at the cheese or fish that you’re buying at the store next time. The price (assuming it’s random packed) will appear in the barcode. My guess is that somewhere earlier there’s a code that tell the computer what the item is and to check that latter digits for the price.
The computer’s don’t magically order everything though. Inventory control is great, but a sales person still shows up once a week and for some items he’ll still poke around and look at the stock.
I know of one beer (New Glarus) that uses the same UPC on every single one of their six packs. Year round, seasons, one offs, everything. If it’s in a six pack, it has the same UPC. There’s a few reasons for this, but a big one is the ease of getting into the mega-marts. When a regular brewery/distributor puts out a new beer they have to get approval from the mega-mart, get it programmed into the computer, get shelf space, have a shelf tag made, etc. With them, the store just gives them X spots and they can put (more or less) whatever they want in. So when the summer seasonal comes out, they just ship it in and there’s no messing around for three weeks trying to get it slotted. They sales person (or manager, not sure how that works) lets one spot run out and brings in the new one.
Smart.
A UPC bar code looks like this:
a-xxxxx-yyyyy-c
The first digit (“a”) represents an overall category of things; for example, over-the-counter pharmaceuticals often begin with a “3” (but also, they often don’t). The majority of items seem to have “0” here. More cases for this first digit are described below.
The next five digits usually represent the manufacturer. For example, 37000 is the company code for Proctor and Gamble. I have a tube of Crest toothpaste, 0-37000-33086-8; and a jug of Tide liquid detergent, 0-37000-13890-7.
I also have here, two cans of different varieties of Progresso Soup:
0-41196-01022-0 ; Lentil
0-41196-01051-0 ; Green Split Pea.
Each manufacturer gets to assign whatever 5-digit code it wants to each of its products. This becomes the next five-digit group in the bar code, as in the examples above. The final digit is a check digit. (I guess it’s just by chance that it’s 0 in both of those Progresso Soup cans.)
There are other special cases.
If the first digit is 2 (IIRC), then it’s a “random weight” bar code. These are for products that are packaged at the store (usually), like ground beef, and are sold by weight. Here, the first 5-digit group defines the product; and the second 5-digit group is either one check-digit and 4 digits giving the price; or 5 digits giving the price. (The cash register has to be configured to know which way to parse these. I recently had to write a custom add-on module for a cash register to make it configurable for some products but not others according to the sales department.) The final digit is a check digit, as in other UPC codes.
If the first digit is a 4 (usually), then the remainder of the bar code defines the customer rather than a product. If you have a customer card, look at the bar code on it. The cashier can scan your card, right in the midst of scanning products, and the register will recognize it as a customer code, and look you up in the customer database. But not all stores necessarily follow this convention; so your customer card might or might not look like this.
If the first digit is a 5, then the UPC number represents a manufacturer coupon. Scan one of those, and you’ll get some cents off your sale. But you won’t see these much any more, because they’ve already been deprecated and replaced with a much (MUCH) more elaborate bar code scheme for manufacturer coupons.
So, to summarize:
[ul][li] You have a 5-digit code for manufacturer, so there’s room for 100000 manufacturers.[/li][li] You have a 5-digit product code within each manufacturer, so each manufacturer can have up to 100000 products. (I think some major manufacturers may own more than one manufacturer code, to allow for more products.)[/ul][/li]
And yes, UPC codes are running out, just as Internet IP numbers have run out. And more elaborate, or at least longer, bar codes are appearing.
Then there are the “abbreviated” UPC codes. You’ll note that many bar codes have lots of zero-digits in them. There are schemes whereby these can be omitted, and the shorter codes will have enough information in them so they can be reconstructed. These are often used on physically smaller products where there isn’t room to print the whole bar code.
I have a can of Bumble Bee Chunk Light Tuna in Water, with a bar code of 0-866203-6.
According to the instructions I have here, that expands to 0-86600-00020-6. The rules for expanding this differ depending on the last digit of that 6-digit group.
In hindsight I guess I could have just looked up number combinations, but I’m glad I brought the question here as the comments always make for an enjoyable read. Thanks all for the answers.
Virtually everything I have in my pantry that has been labeled for retail sale in the USA has a bar-code that begins with zero, even if the label clearly states that the contents are a product of China, India, or elsewhere, or even “imported from”. My supermarket has a few items that they bring in independently from Mexico, and the bar code begins with 6. Also, condiments that I bought in Mexico and brought home usually (not always) have a bar-code with 6.
The USA zero-prefix applies to non-foods, as well, such as toothbrushes and bar soap. Even though my Mexican bar soap has no English at all on the label, it still starts with 0.
There are also PLU numbers, for fresh produce, which as far as I can tell, bypass the bar-code system. PLU numbers are universal (in the USA) – any tomato sold by any store that is labeled as Roma Tomato will have the same PLU number. But if you go back next month and buy some more, they will likely have a different bar-code, even from the same store, but still the same PLU number, which is for internal use so the cashier doesn’t have to ring things up by an excessively long and frequently changing number.
My store has a produce scale, where I can weigh the produce, punch in the 4-digit PLU number displayed on the shelf, and print a sticker that the cashier scans when I check out. The sticker names the item (“Roma Tomatoes”) and displays weight and price and a bar-code, but not the PLU number.
The country of origin of the product typically doesn’t factor in to the country assignment for UPC/GTIN mfg id’s.
For example, consider a US based company that is designing items and having them manufactured in various countries. A typical scenario is that the US company purchases at least one (typically many) “manufacturer id’s” from GS1, sequentially assigns UPC/GTIN numbers using those mfg id’s, and instructs the factory in China/Mexico/Wherever to use those UPCs/GTINs for the items being produced.
The mfg ID in this case will be a US code but the items are being produced all over.
I have a client who sells a particular cash register app to supermarkets (among others); as I mentioned earlier, I write add-on modules for him for his customers. One problem had to do with selling day-old stuff. They would sometimes have day-old bananas (e.g.), with the same 4-digit PLU as fresh bananas, but at a day-old price. I implemented a way to code those in the PLU database, so that when the cashier enters the 4-digit PLU, a menu pops up showing all the items having the same PLU and their prices. Then the cashier selects one.
How does the cashier know which one to select?
I don’t think I’ve seen these day-old bananas before.