Free Code 128 barcode generator

Generate Code 128 barcodes from whichever data source suits you — type them in by hand, pull them from a CSV file, or auto-generate a sequence. Download the result in the format you need: PNG, PDF, or a ZIP archive. Print straight to an Avery label sheet. No sign-ups, no watermarks.

Symbology

Any letters, digits and symbols, any length — best for internal asset tags.

Input
Options

0 of 0 codes ready

Add values on the left to see your codes here.

Generated in your browser — nothing is uploaded.

Code 128 encodes all 128 ASCII characters — uppercase and lowercase letters, digits, punctuation, control codes — at any length. That range is why it became the default for internal asset tags, work orders, and warehouse labels: whatever numbering scheme you already run, Code 128 carries it unchanged.

The format has three subsets. Subset A covers uppercase letters and control characters, subset B covers upper and lower case plus punctuation, and subset C packs two digits into one symbol, roughly halving the width of a numeric code. The encoder switches between them on the fly and picks the shortest representation for your data, so there is nothing to configure.

Every symbol also carries a mod-103 check character derived from the payload. This generator computes it for you — the value you type is the value a scanner hands back.

GS1-128, formerly UCC/EAN-128, is Code 128 with a convention on top: an FNC1 character in the first position marks the symbol as GS1, and the payload is split into application identifiers such as (01) for a GTIN or (17) for an expiry date. Retail and pharma trading partners require that structure. For internal tagging you want plain Code 128, which is what this tool produces.

Labeling an actual retail product rather than an internal asset? That calls for a UPC or EAN code, not Code 128 — the dedicated UPC barcode generator computes the check digit for UPC-A, UPC-E, EAN-13, and EAN-8.

Code 128 vs Code 39

Code 128Code 39
Character setAll 128 ASCII characters43 characters: A-Z, 0-9, and - . $ / + % plus space
Lowercase lettersYesNo — Extended Code 39 aside
DensityHigh — subset C stores two digits per symbolLow — roughly 30-50% wider for alphanumeric data, well over twice as wide for purely numeric data
Check charactermod-103, always presentOptional mod-43, usually omitted
Typical useAsset tags, logistics, healthcare, GS1-128Legacy inventory, military and automotive systems

Code 39 survives mostly because decades-old scanners and label software handle it without setup. For anything new, Code 128 fits more data into less label, validates itself, and accepts the mixed-case IDs that most asset registers use.

Code 128 — common questions

Edge cases that show up once the labels are printed and scanning starts.

  • Why does my scanner return the value without its leading zeros?

    Code 128 stores exactly the characters you encoded, leading zeros included. They disappear after the scan, not during it — usually because the spreadsheet cell or database field receiving the keystrokes treats the value as a number. Format the destination column as text before scanning, or give asset IDs a non-numeric prefix such as AST-.

    Can Code 128 hold spaces and punctuation?

    Yes, the full ASCII set — spaces, slashes, hyphens, and symbols all encode. Skip them in asset IDs anyway: a value that later lands in a filename, a URL, or a CSV export travels more safely without spaces.

    Do I need to add a check digit myself?

    No. Type the value you want scanners to return and nothing else — adding your own check digit produces a code that reads back with an extra character on the end.

Tagging assets at scale? Talk to sales

Everything renders locally — the value you type is drawn onto an off-screen canvas in your own browser, and the ZIP and PDF libraries only load once you click a download. No barcode data reaches our servers.

Printing Code 128 tags for equipment is the first half of the job; the second is having something to scan them into. UNIO24's asset tagging turns a scan into a full record, and the field guide to labels that stop scanning is worth a read before you commit to a label stock.

up arrow