Bulk Barcode Generator Generate Free →
Code 128 — Linear Barcode

Free Code 128 Barcode Generator

Generate Code 128 barcodes in bulk from a CSV or Excel file. Export print-ready PDF for Avery labels, high-resolution PNG, scalable SVG, or native ZPL commands for Zebra thermal printers — no row limit, no signup, no watermark. All barcode generation runs locally in your browser.

Generate Code 128 Barcodes Free →
No signup required No row limit No watermark Data stays in your browser

Why Use Our Code 128 Generator?

📋

Paste or Upload CSV/Excel

Paste values one per line, or upload a CSV or Excel file with hundreds of product codes. Choose which column to use as the barcode value.

🖨️

PDF, PNG, SVG & ZPL Export

Download an Avery-compatible PDF, high-res PNG ZIP, scalable SVG, or native ZPL for Zebra thermal printers — all at 300 DPI.

🔒

Private & No-Limit

No row limit, no signup, no watermark. All processing is local — your SKUs and product codes never reach any server.

Generate Code 128 Labels in 3 Steps

1

Paste or Upload

Paste values one per line, or upload CSV/Excel. Select the column containing your codes.

2

Select Code 128

Choose Code 128 from the symbology picker. Set label size, paper format, and export type (PDF / PNG / ZPL).

3

Download & Print

Click Generate and download your ZIP, PDF, or ZPL file — ready for Avery sheets or thermal printers.

Common Uses for Code 128 Barcodes

Warehouse

Inventory & Bin Labels

The standard for internal stock locations, bin numbers, and SKU tracking in warehouses and 3PL facilities.

Shipping

Carrier & Shipping Labels

FedEx, UPS, and DHL use Code 128 on shipping labels for package tracking and route sorting.

Retail

Internal Product Tags

Small shops use Code 128 for in-house product labels without needing a GS1 barcode registration.

Manufacturing

Work-in-Progress Tracking

Track components and assemblies through manufacturing stages with Code 128 work-order barcodes.

What is a Code 128 Barcode?

Code 128 is a variable-length linear barcode that can encode the full 128-character ASCII set, including uppercase and lowercase letters, digits, and punctuation. It is one of the most compact and widely compatible 1D barcode formats in existence, supported by virtually every barcode scanner manufactured in the last 30 years.

Unlike retail formats such as UPC-A or EAN-13, Code 128 requires no GS1 membership or prefix registration. This makes it the default choice for internal inventory systems, shipping labels, and any application where the same organization controls both the label printer and the scanner.

Code 128 Technical Specification

PropertyValue
Symbology typeLinear (1D), continuous, variable length
Character setAll 128 ASCII characters (via three subsets)
SubsetsA (control + uppercase), B (upper + lowercase), C (numeric pairs)
Data lengthVariable; practical limit ~48 characters
Check characterMandatory, modulo-103, calculated automatically
Structure per character3 bars + 3 spaces = 11 modules
Quiet zoneMinimum 10× the narrowest bar width, each side
Typical X-dimension0.25 mm (10 mil) for laser; 0.19 mm (7.5 mil) at 300 DPI thermal
Registration requiredNone — no GS1 membership or prefix fee

Every Code 128 character occupies exactly 11 modules, split into three bars and three spaces. That fixed-width structure is what makes the format "continuous" — there is no inter-character gap, so the bars pack tighter than in older formats like Code 39, which needs a narrow space between every character.

Bar height and the human-readable line

Code 128 has no mandated bar height, unlike retail formats where the specification fixes proportions. In practice, bar height should be at least 15 % of the barcode's total width, or about 6 mm minimum — whichever is greater. Taller bars give a handheld scanner more vertical tolerance, which matters when an operator scans at an angle or the label is curved around a bottle or a cable.

The human-readable text below the bars is optional to the specification but effectively mandatory in practice. If a barcode gets damaged or a scanner fails, a person needs to type the value manually. Our generator includes the text line by default and lets you replace it with a custom label — useful when the encoded value is a long internal SKU but the operator only needs to see a short bin code.

Subsets, GS1-128, and the Check Character

Three subsets and automatic switching

Code 128 defines three character subsets, and a single barcode can switch between them mid-string. Subset A covers uppercase letters, digits, and ASCII control characters. Subset B covers uppercase and lowercase letters plus digits. Subset C is the interesting one: it encodes two digits per 11-module symbol instead of one character, which makes a purely numeric value roughly twice as dense as the same value in subset A or B.

Our generator picks the optimal subset automatically and inserts shift codes where switching mid-string produces a shorter barcode. A 20-digit numeric value encoded in subset C occupies about the same physical width as a 10-character alphanumeric value in subset B. This is why a numeric-only SKU scheme fits on a smaller label than a mixed alphanumeric one of the same character count — worth knowing if you are still designing your SKU format.

The modulo-103 check character

Code 128 requires a check character, which the encoder derives by summing the weighted values of each symbol and taking the remainder modulo 103. Unlike UPC-A or EAN-13, this check character is not printed in the human-readable line — it exists purely inside the bar pattern. You never enter or calculate it, and a scanner that reads a Code 128 barcode has already verified it before reporting the value.

GS1-128 is Code 128 with a specific first character

GS1-128 (formerly UCC/EAN-128) is not a separate symbology. It is a Code 128 barcode whose first data character is the FNC1 function character, signalling to the scanner that the payload follows GS1 Application Identifier syntax — structured fields such as (01) for GTIN, (10) for batch/lot, (17) for expiry date. Retail and pharmaceutical supply chains use GS1-128 on shipping cases. If a distributor asks for "GS1-128", they need the AI-formatted payload, not a different barcode type.

History: Code 128 was developed in 1981 by Computer Identics and standardised as ISO/IEC 15417. Its combination of full ASCII support, high density, and zero licensing cost is why it displaced Code 39 as the default choice for internal-use barcodes across logistics and manufacturing.

Frequently Asked Questions

What is a Code 128 barcode?
Code 128 is a high-density linear barcode that encodes all 128 ASCII characters — letters, numbers, and symbols. It is the most widely used 1D barcode format in warehousing, logistics, and internal inventory systems.
When should I use Code 128 instead of UPC-A or EAN-13?
Use Code 128 for any internal system where you control both the printer and the scanner — warehouse bin locations, SKU labels, internal tracking codes. UPC-A and EAN-13 are for retail products that will be scanned at a point-of-sale system and require a paid GS1 prefix.
How many characters can Code 128 store?
Code 128 can encode any number of characters, but best practice is to keep values under 48 characters for reliable scanning. For longer data strings, consider Data Matrix or QR Code.
Does Code 128 require a check digit?
Yes, Code 128 includes a mandatory check character. Our generator calculates and includes it automatically — you never need to compute it yourself.
Can I generate Code 128 barcodes for a Zebra thermal printer?
Yes. Bulk Barcode Generator exports native ZPL II commands for Code 128, compatible with Zebra ZD, ZT, and GX series printers as well as Rollo and SATO devices. No driver installation or special software needed.
Is there a limit on how many Code 128 barcodes I can generate at once?
No. Bulk Barcode Generator has no row limit. Paste 10 values or 10,000 — all processing happens locally in your browser and your data never leaves your device.
What is the difference between Code 128 and GS1-128?
GS1-128 is a Code 128 barcode whose payload starts with the FNC1 function character and follows GS1 Application Identifier syntax — structured fields like (01) for GTIN or (17) for expiry date. The bar pattern is generated by the same Code 128 encoder; only the data formatting differs. If a retail distributor or pharmaceutical supply chain asks for GS1-128, they need the AI-formatted payload, not a different symbology.
How wide should the narrowest bar be?
The narrowest bar width (called the X-dimension) determines whether the barcode scans. For labels printed on a laser printer and read by handheld scanners, aim for at least 0.25 mm (10 mil). On a 300 DPI thermal printer you can go down to about 0.19 mm (7.5 mil). Below that, phone cameras start failing even when dedicated scanners still read it. Always leave a quiet zone of at least 10× the X-dimension on both sides — insufficient quiet zone causes more scan failures than narrow bars do.
Why does my Code 128 barcode look different from another generator's output for the same value?
Because Code 128 has three subsets and encoders choose differently. A numeric value encoded in subset C packs two digits per symbol, producing a visibly shorter barcode than the same value in subset B. Both scan to the identical string, so either is correct — ours picks the subset combination that yields the shortest bar pattern. Bar height, quiet zone padding, and whether the human-readable line is included also vary between tools.