Barcodes & 1D Codes

EAN, UPC, Code 128 and the Barcode Zoo

There are dozens of barcode 'symbologies.' A friendly tour of the most common linear barcode formats and where they're used.

If you have ever wondered why some barcodes are short and stubby while others stretch across a whole shipping label, the answer is barcode symbologies. A symbology is simply the rulebook for how bars and spaces map to characters, and there is a whole zoo of them, each built for a different job. Let's meet the most common ones. 🐾

What is a barcode symbology?

A symbology is the encoding standard that defines how a barcode represents data: how many bars make up each character, how wide they are, where the code starts and stops, and whether it carries a check digit. Two barcodes can look almost identical and yet follow completely different rulebooks.

Symbologies fall into two broad camps. Some, like UPC and EAN, are numeric-only and built for retail. Others, like Code 39 and Code 128, are alphanumeric and built for logistics and industry, where labels need to carry letters as well as digits. All of these are 1D, or linear, codes; the 2D world of QR and Data Matrix plays by its own rules, which we cover in QR code vs Data Matrix.

UPC-A: the supermarket standard

The UPC-A barcode is the one you see on almost every product in a North American store. It encodes exactly 12 digits: a number identifying the manufacturer, a number identifying the product, and a final check digit. It carries no letters, only numbers, because it is a pure lookup key into a retailer's price database.

UPC-A is a GS1 retail standard, meaning the numbers are issued under a globally coordinated system so that no two products share a code. Its history is a story in itself, told in the UPC barcode history.

EAN-13: the global cousin

Outside North America, the dominant retail code is EAN-13, the European (now international) counterpart to UPC. As the name suggests, it encodes 13 digits, one more than UPC-A. That extra digit lets the code carry a country or numbering-authority prefix, making EAN-13 the worldwide standard for retail products.

UPC-A and EAN-13 are closely related; a UPC-A code is essentially an EAN-13 with a leading zero. Both are managed by GS1, the global standards body we explore in GS1 barcode standards. Both also end with a check digit, the clever redundancy digit explained in our check digit guide.

Code 39: the industrial workhorse

Step out of the shop and into the warehouse, and you meet Code 39. Unlike UPC and EAN, Code 39 is alphanumeric: it can encode the digits 0–9, the uppercase letters A–Z, and a handful of symbols. This makes it useful for asset tags, ID badges, and industrial part numbers where labels mix letters and numbers.

Code 39 is old, simple, and self-checking, and it does not require a check digit to function. Its main drawback is that it is not very dense; each character takes up a fair amount of width, so codes carrying long strings can grow uncomfortably wide.

Code 128: compact and versatile

Code 128 is the modern, high-density alphanumeric symbology and a favourite in logistics and shipping. It can encode the full range of standard characters, including both uppercase and lowercase letters, digits, and symbols, and it does so much more compactly than Code 39. A built-in check character guards against misreads.

Because it is dense and flexible, Code 128 is the basis for GS1-128 (formerly UCC/EAN-128), a structured version used to encode shipping and logistics data such as batch numbers, expiry dates, and quantities on cartons and pallets.

ITF-14: the shipping carton code

When products are packed into cartons for shipping, retailers often use ITF-14. ITF stands for Interleaved Two of Five, a numeric symbology, and the 14 refers to the 14-digit number it carries. That number identifies the full case or carton rather than the individual item inside it.

ITF-14 is designed to be printed directly onto rough corrugated cardboard, so its bars are bold and forgiving of imperfect printing. It is a key part of moving goods through the supply chain, a topic we expand on in barcodes and QR codes in logistics.

Which symbology should you use?

The right symbology depends on what you are labelling and who will scan it. Here is a quick tour of the zoo.

SymbologyData typeTypical use
UPC-A12 digitsRetail checkout (North America)
EAN-1313 digitsRetail checkout (worldwide)
Code 39AlphanumericAsset tags, ID badges, industry
Code 128Alphanumeric (dense)Shipping, logistics, GS1-128
ITF-1414 digitsCartons and cases

Notice a pattern: retail codes are numeric because they are database keys, while industrial codes are alphanumeric because they carry richer, human-meaningful data. When even Code 128 is not roomy enough, the world turns to 2D codes. You can create a free QR code to see how much more a grid can hold, or compare the whole family in 1D vs 2D barcodes.

Frequently asked questions

What is a barcode symbology?

It is the encoding standard that defines how bars and spaces represent characters, including how each character is drawn, where the code starts and stops, and whether it carries a check digit.

What is the difference between UPC-A and EAN-13?

UPC-A encodes 12 digits and dominates North American retail, while EAN-13 encodes 13 digits and is the worldwide standard. A UPC-A code is essentially an EAN-13 with a leading zero, and both are GS1 retail standards.

When should I use Code 128 instead of Code 39?

Use Code 128 when you need to pack more data into less space or include lowercase letters, since it is much denser than Code 39. Code 39 remains handy for simple alphanumeric tags where density is not a concern.

What is ITF-14 used for?

ITF-14 encodes a 14-digit number that identifies a shipping carton or case rather than the individual item, and its bold bars are made to print reliably on corrugated cardboard.

Are UPC and EAN codes alphanumeric?

No. UPC and EAN are numeric-only because they act as lookup keys into a product database. Alphanumeric data is the job of symbologies like Code 39 and Code 128.

Make a QR code the honest way 🐾

Free forever, no tracking, no expiry — generated right in your browser.

🎨 Create a QR code →