Code 128 vs Code 39: Which One Should You Use?

Published 9 October 2026

If you need a barcode that holds letters as well as numbers, you'll meet two names again and again: Code 128 and Code 39. Both work. Here's how to pick.

Code 128Code 39
CharactersAll 128 ASCII characters43: A–Z, 0–9, space and - . $ / + %
Lower-case lettersYesNo (capitals only)
Width for the same dataNarrowerWider
Check characterBuilt inNot required
Good forShipping, inventory, new projectsOlder systems, badges, specifications that name it

The quick comparison

  • Code 128 can hold all 128 ASCII characters: upper and lower case letters, digits and symbols. It's compact, and it has a built-in check character.
  • Code 39 holds capital letters A to Z, digits 0 to 9, and a few symbols (the space and - . $ / + %). That's 43 characters. It's wider, and it has no required check digit.

Size

Code 128 is more compact. It can pack two digits into one symbol, so a long number takes about half the space. Code 39 uses nine elements per character, so the same text comes out noticeably wider. If your label is narrow, that alone may decide it.

Characters

If you need lower-case letters, Code 128 is the straightforward answer. Code 39 only has capitals. Our Code 39 generator will convert lower-case letters for you, but a scanner will then read capitals.

Scanner support

Almost every scanner reads both. But some older systems were set up only for Code 39, and some scanners have Code 39 switched on by default and need Code 128 to be enabled. If you're adding barcodes to an existing system, check what it already expects.

Printing

Code 39 is simple, tolerant of rough printers, and easy to read at a glance. That's part of why it has lasted so long on industrial and government labels. Code 128 prints perfectly well on any decent printer.

So which should you choose?

  • Choose Code 128 for new projects, shipping and inventory labels, mixed upper and lower case, long numbers, or narrow labels.
  • Choose Code 39 when a standard, customer or older system asks for it, for example some automotive and defence labelling, or ID badges set up for it.
  • Neither for products sold in shops. Those need an EAN-13 or UPC-A. See barcodes for products you sell.

When in doubt, make both with the barcode generator and scan them with the equipment you'll really use. The right answer is the one that scans cleanly on your scanner.

What happens if you pick the wrong one

Usually nothing dramatic. A scanner that isn't set up for a format simply won't read it, or reads a different value. The fix is nearly always to enable the format in the scanner's settings, or to make the barcode in the format the system expects. If a system you don't control asks for a particular type, use that.

Mixed letters and numbers

If your values mix letters and digits, such as "AB-12345", both formats work, and Code 128 will be narrower. If your values are all capitals and short, Code 39 is perfectly good too.

Other barcodes in the family

For product numbers use EAN-13 or UPC-A. For cartons use ITF-14. Our guide to printing barcode labels covers sizes and printers for all of them.

Frequently asked questions

Is Code 128 better than Code 39?

For new projects, usually yes, because it's more compact and holds more characters. Code 39 is better only when something you rely on already expects it.

Can one scanner read both?

Most can, but some need each format to be switched on in the settings.

Do I need a check digit for Code 39?

No. Code 39 doesn't require one. Code 128 includes its own check character automatically.

Which is easier to print on a basic printer?

Code 39 is simple and tolerant, but Code 128 prints fine on any decent printer. Test either on your actual equipment.

More guides

See all guides