Choosing a barcode
Which Barcode Type Should I Use? EAN-13, UPC-A, Code 128 & More
Choose a barcode by the system that will scan it, not by which pattern looks familiar. Retail point-of-sale, internal inventory, legacy equipment and logistics workflows can require different symbologies even when the printed labels look similar.
Updated September 13, 2026
For a retail trade item, use the GS1 identifier and barcode format required by your market and trading partner—commonly EAN-13 for GTIN-13 or UPC-A for GTIN-12. For internal SKUs, assets or serial numbers, Code 128 is usually the flexible starting point. Use Code 39 when an existing system specifically requires it. Small retail items may use EAN-8 when a GTIN-8 has been properly assigned.
Quick barcode type comparison
Start with where the code will be scanned and what the receiving system expects. The table below is a practical first filter, not a replacement for retailer, standards-body or trading-partner requirements.
| Barcode type | Good fit | Typical data | Important note |
|---|---|---|---|
| EAN-13 | Retail products | 13 digits / GTIN-13 | Common outside North America; use the identifier assigned for the trade item |
| UPC-A | Retail products | 12 digits / GTIN-12 | Common in North America; retailer requirements still matter |
| Code 128 | Internal inventory, SKUs, serial numbers | Letters, numbers and symbols | Flexible general-purpose symbology; not the same thing as GS1-128 |
| Code 39 | Legacy industrial or internal systems | Restricted alphanumeric set | Use when the receiving system expects Code 39 |
| EAN-8 | Small retail packaging | 8 digits / GTIN-8 | A GTIN-8 is assigned under GS1 rules; it is not just a shortened EAN-13 |
| ITF-14 | Cases and distribution packaging | GTIN-14 | Commonly used away from retail point-of-sale |
For retail products: start with the assigned GTIN
EAN-13 and UPC-A belong to the GS1 EAN/UPC family used at retail point-of-sale. GS1 describes UPC / GTIN-12 as most common in North America and EAN / GTIN-13 as most common in Europe and the rest of the world. GS1 also notes that EAN and UPC symbols are accepted globally, while individual retailers may still impose their own buying-guide requirements.
The key point is that the barcode image and the product identifier are not the same thing. A generator can render a number as bars, but it does not allocate the GTIN, establish ownership of the number or register the product with a retailer.
For a GTIN-12 / UPC workflow: use UPC-A when that is the required symbol
UPC-A carries a 12-digit GTIN-12 and remains strongly associated with North American retail workflows. Do not switch barcode types simply because another format looks more international. If a retailer, marketplace or trading partner gives you a specification, follow that specification.
If you already have the correct UPC value, BarcodeBatch can render UPC-A directly. It will not invent, pad or repair the retail identifier for you.
For internal inventory, SKUs and serial numbers: Code 128 is a strong default
When the barcode is for your own stockroom, bins, equipment, serial numbers or internal product codes, you usually do not need a retail EAN/UPC symbol. Code 128 is compact and flexible enough for letters, numbers and common symbols, which makes it a practical choice for many internal workflows.
Generic Code 128 and GS1-128 are not interchangeable terms. GS1-128 is a GS1-specific subset of Code 128 that uses FNC1 and GS1 Application Identifiers. If a logistics partner requests GS1-128, follow that specification rather than treating any Code 128 symbol as equivalent.
Use Code 39 when compatibility matters more than density
Code 39 remains common in older industrial, asset and internal systems. It is less data-dense than Code 128 and supports a more limited character set in its standard form, so it is usually chosen because an existing scanner, label specification or downstream application requires it.
If you control both the label and receiving software and do not have a legacy constraint, Code 128 is often the more flexible option. If the system documentation says Code 39, match the system instead of changing formats for convenience.
Five questions to answer before choosing a barcode
A correct choice usually becomes obvious once the scanning environment is defined. Answer these questions before printing a large batch.
- Will the code be scanned at a retail point-of-sale or only inside your own business?
- Has a GTIN already been assigned to the trade item?
- Does a retailer, marketplace, warehouse or customer specify the exact symbology?
- Do you need letters and symbols, or only a fixed-length numeric identifier?
- Will you generate one label or hundreds of rows from an Excel workbook?
Common questions
Frequently asked questions
What barcode should I use for a product sold in stores?
Use the identifier and EAN/UPC symbol required for that trade item and trading relationship. EAN-13 commonly carries GTIN-13 and UPC-A carries GTIN-12. Confirm retailer or trading-partner requirements instead of choosing only by appearance.
What barcode should I use for inventory?
For an internal inventory system that you control, Code 128 is a flexible starting point because it can encode letters, numbers and symbols. If your warehouse software specifies another format, use the required format.
Is Code 128 the same as GS1-128?
No. GS1-128 is a GS1-specific subset of Code 128 that uses FNC1 and GS1 Application Identifiers. A generic Code 128 barcode should not be presented as GS1-128.
Can I make up my own EAN-13 or UPC-A number?
A barcode generator can draw bars for a value, but retail GTIN assignment and ownership are separate. For official retail identification, follow GS1 and the requirements of the retailer or marketplace using the code.
Sources & standards
Technical claims in this guide are checked against primary or official documentation where available.