Home · Barcode types · Code 128
Free Code 128 Barcode Generator: Variable-Length Codes for Shipping, Inventory & Asset Tags
Code 128 is the workhorse of industrial linear barcodes. Unlike retail UPCs which are fixed-length and numeric, Code 128 encodes any combination of letters, digits, and ASCII control characters — making it the go-to for shipping labels, internal SKUs, asset tracking, healthcare bands, and warehouse pick lists.
Validator
Paste an existing Code 128 into the field above. We compute the check digit if you provide just the payload, verify it if you provide the full code, and refuse to render if the check digit is wrong — so anything that renders here is guaranteed to scan.
Type anything from a single digit to ~80 characters. Code 128 auto-selects between its three subsets (A, B, C) to minimize barcode width for your input. Generated codes always include the correct mod-103 check character and start/stop markers.
Structure
Variable length. Three character subsets (A: uppercase + control, B: full ASCII, C: paired digits for double-density numeric). Each character is 11 modules wide. Includes a start character (one of 3 codes per subset), data, mod-103 check character, and a stop character.
When to use Code 128
- FedEx, UPS, USPS, DHL shipping labels (often as part of a GS1-128 / UCC-128 wrapped form)
- Internal warehouse SKUs and pick-list tags
- Healthcare wristbands, medication labels, patient tracking
- Library books, asset inventory, IT equipment tags
- Event tickets, badge scanning, conference check-in
Where it's required
- Shipping carrier labels (often in GS1-128 form with FNC1 separators and AI prefixes)
- Hospital tracking systems (GS1 Healthcare standards)
- Most enterprise inventory and asset management platforms
FAQ
Is Code 128 still widely used?
Yes — Code 128 is the dominant modern 1D barcode. It's used on UPS, FedEx, and USPS shipping labels, every Amazon FBA FNSKU label, GS1-128 supply-chain codes with Application Identifiers (lot, serial, expiry), healthcare patient wristbands, and most modern asset-tracking systems. It plays a primary role in supply chains across nearly every industry.
What is the difference between Code 128 and Code 39?
Code 128 supports the full ASCII 128-character set (including lowercase and symbols) and is ~30% denser. Code 39 supports only 43 characters (uppercase A-Z, 0-9, and -. $/+%) and produces wider, less-dense barcodes. Code 128 has a required checksum; Code 39's is optional. For new projects, Code 128 is almost always the right choice. See our full comparison.
How do I read a Code 128 barcode?
Any imaging-based scanner reads Code 128 — smartphone cameras (iOS Camera app, Google Lens), 2D imaging scanners, and most modern laser scanners. The scanner identifies the start character (A, B, or C subcode), decodes each 11-module character group, validates the modulo-103 checksum, and outputs the string.
What scanners are compatible with Code 128?
Essentially all modern barcode scanners. Reliable USB options that work plug-and-play: Zebra DS2208, Honeywell Voyager 1250g, NADAMOO Wireless 2-in-1, Tera 5100/8100. Smartphones read Code 128 via Orca Scan, Scandit, or built-in OS cameras.
Is Code 128 better than Code 39?
For new applications, yes — Code 128 is more compact, supports more characters (including lowercase), and is required for GS1-128 supply-chain compliance. Code 39 is only 'better' when integrating with legacy systems that mandate it (some military and old industrial specs).
What's the difference between Code 128 and GS1-128?
GS1-128 is Code 128 with a special FNC1 character at the start and standardized 'Application Identifiers' (AIs) prefixing each data segment. AIs encode meaning: (01) for GTIN, (10) for lot, (17) for expiry, (21) for serial. Plain Code 128 has no semantic structure — the bytes are whatever you want.
Code 128 on specific platforms
Related generators
- FNSKU — Free FNSKU label generator for Amazon FBA.
- ITF-14 — Free ITF-14 barcode generator.
- Data Matrix — Free Data Matrix generator.