Code 128 Generator
100% private — runs on your device, never uploaded. Works offline once loaded.
Code 128 is the one to reach for when the thing you are encoding is not a retail product: an asset tag, a shipping reference, a work order, a shelf location. It takes the whole ASCII set — capitals, lower case, digits, punctuation — at any length, and it packs digits two to a character, so a long number takes barely more room than a short one. A check character is worked out and built in by the specification itself, which is part of why scanners read it so reliably. Type your value and it is drawn here; nothing is uploaded.
Why Code 128 is usually the right answer
If your barcode is not going on a retail shelf, Code 128 is almost certainly the format you want. It encodes the full printable ASCII set at any length, it is the densest of the common alphanumeric symbologies, and it carries its own check character worked out by the encoder, which is part of why scanners read it so reliably. It is what UPS, FedEx and DHL labels are built from, what most warehouse management systems emit, and what asset tags default to.
The format achieves that density with three character subsets — A, B and C — and the ability to switch between them mid-symbol. Subset C encodes digits in pairs, so a long numeric value takes about half the space it would in Code 39. Plain “Code 128” here picks and switches subsets for you as it encodes; the A, B and C entries in the type list are there for the rare system that insists on one subset throughout.
How wide is it going to be?
Each character adds eleven modules, so width grows in a straight line with length: a six-character value at a 0.25 mm narrow bar is around 22 mm, a twenty-character one around 60 mm. Two ways out when it will not fit: encode digits only, so subset C halves the count, or raise the narrow bar width and accept a physically bigger label. Shrinking the module width instead is the tempting option and the one that stops working at the scanner — below roughly 0.19 mm most handheld readers and most printers give up.
Code 128 and GS1-128
GS1-128 — once called UCC/EAN-128 — is Code 128 with a rulebook: a special start sequence and standard application identifiers in brackets, like (01) for a GTIN or (17) for an expiry date, used on logistics labels and SSCC pallet labels. This tool draws plain Code 128, so an SSCC label built for a supply-chain partner needs software that understands those identifiers. For everything that is not a formal GS1 logistics label — internal tags, shipping references, work orders, bin locations — plain Code 128 is what you want, and it is what you get here. If it turns out you need a retail symbol after all, the barcode generator carries all twenty-one types.
Frequently asked questions
Does Code 128 take letters?
Yes — the full printable ASCII set, upper and lower case, digits and punctuation, which is what separates it from the numeric-only retail formats.
How long can the value be?
There is no fixed limit in the format, but the symbol gets wider with every character. Past about twenty characters it becomes hard to print small enough for a scanner to take in at one pass.
What are Code 128 A, B and C?
Three character subsets: A covers capitals and control characters, B covers ordinary mixed-case text, and C encodes digits in pairs for maximum density. Plain “Code 128” picks between them for you as it encodes.
Is Code 128 the same as GS1-128?
No. GS1-128 is Code 128 plus a defined set of application identifiers for supply-chain data. This tool produces plain Code 128, which is what internal labels, asset tags and shipping references use.
Do I need to add a check digit?
No — Code 128 calculates a check character as part of encoding and hides it inside the symbol. You never type it and a scanner never reports it.
Can it encode spaces and punctuation?
Yes, including spaces, hyphens, slashes, full stops and mixed case. That is the main practical advantage over Code 39.
Advertisement