Free bulk Code 128 barcode generator

Paste a column of asset IDs, upload the CSV your spreadsheet just exported, or set a prefix and let the tool number the run for you. Up to 500 Code 128 codes render at once, each with its mod-103 check character already worked out. Take the batch as PNGs, a ZIP, or an Avery sheet that goes straight to the printer. No sign-up, no watermark.

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.

There are four ways to get values into the batch, and between them they cover most of what people already have sitting around. Paste one value per line when the list is in front of you. Upload a CSV and pick which column holds the value and which one holds the label underneath it — that happens after the file loads, so an export straight out of Excel or Sheets needs no cleanup first. Or skip the file entirely: give the Sequence mode a prefix like AST-, a starting number and a zero-pad width, and it numbers the whole run.

Five hundred rows per batch. Paste more than that and the tool uses the first 500 and says so, instead of quietly dropping the rest.

Worth knowing before you commit a batch to label stock: Code 128 codes from the same run do not come out the same width. Subset C packs two digits into one symbol, so 100234 prints noticeably narrower than AST-100234. If the labels have to sit in identical slots on a sheet, keep the ID format consistent across the batch — same prefix, same digit count — and the widths fall into line. Mixed-length IDs are fine on individual labels and awkward on a grid.

Then take the batch out as a ZIP of individual PNGs, as a PDF sized to a standard Avery sheet, or send the preview grid to the printer.

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 — the dedicated GS1-128 generator validates the identifiers and places FNC1 for you. 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.

Related free tools

Same workflow, different code. No sign-up on any of them.

QR Code Generator

Create QR codes for links, text, Wi-Fi, email, or phone. Customize colors, add a logo, download PNG or SVG, all in your browser.

Open generator

vCard QR Code Generator

A QR code that adds a contact in one scan — name, company, phone, email. Static, no expiry, no account, exported as PNG or SVG.

Open generator

Bulk QR Code Generator

Turn a list, CSV, or numbered sequence into up to 500 QR codes at once, then export them as PNGs, a ZIP, or a print-ready Avery sheet.

Open generator

Bulk Barcode Generator

The same batch workflow for linear barcodes. Paste a list or upload a CSV and render dozens at once as PNGs, a ZIP, or an Avery PDF sheet.

Open generator

UPC Barcode Generator

UPC-A and UPC-E for retail products, plus EAN-13 and EAN-8 for markets outside North America. Check digits computed as you type.

Open generator

Barcode & QR Scanner

Read a code back with your camera or from a photo. QR, EAN, UPC, Code 128, and Data Matrix, decoded in your browser.

Open scanner

Code 39 Barcode Generator

The legacy industrial format that old scanner fleets and military specs still require. One code or a batch of 500, validated as you type.

Open generator

EAN-13 Barcode Generator

Retail EAN-13 with the check digit computed for you — type 12 digits, get 13. Single codes or a CSV batch, verified before they render.

Open generator

GS1-128 Barcode Generator

Element strings in (AI) syntax with FNC1 placed automatically — GTIN and SSCC check digits verified, application identifiers validated.

Open generator

Data Matrix Generator

ECC-200 Data Matrix for part marking and tiny labels — the square code that fits where QR cannot. One code or a batch of 500.

Open generator

PDF417 Barcode Generator

The stacked format on shipping papers and passes. Renders single codes or a CSV batch, readable by laser guns and cameras alike.

Open generator

QR Code & Barcode Repair

Upload a photo of a code that won't scan. The tool decodes what survives in the print and rebuilds a clean replacement to reprint.

Open repair tool

Bulk Code 128 — common questions

Edge cases that show up when you print a whole batch rather than one label.

  • My spreadsheet export has a header row and six columns I do not need. Do I have to clean it up first?

    No — upload it as it comes. The header row is detected on its own, and the tool guesses which column holds the barcode value and which one holds the caption from the header names. If it guesses wrong, switch the columns yourself after the file loads. Everything else in the file is ignored.

    Can each code in the batch carry its own caption?

    Yes. Give the CSV a second column — AST-001,Drill — and each barcode prints with its own human-readable line underneath. Without that column the value itself is used as the caption.

    Is 500 codes a hard ceiling?

    Per batch, yes, and it is a real limitation rather than a paywall: every code is drawn in your own browser, and past roughly 500 the page gets slow on modest hardware. For a 2,000-tag rollout, run four batches — the sequence mode makes that painless, since you only move the start number.

    Do the codes in one batch all come out the same width?

    Only if the values have the same shape. Code 128 switches into subset C for runs of digits and packs two of them per symbol, so a purely numeric ID prints much narrower than the same ID with a letter prefix. Keep one format across the batch when the labels have to line up in a grid.

Tagging assets at scale? Talk to sales

Nothing you paste or upload leaves the machine. Every code in the batch is drawn onto an off-screen canvas in your own browser, and the ZIP and PDF libraries load only when you click a download — a list of internal asset IDs never reaches our servers, which is not something you can assume about every generator that asks you to upload a file.

up arrow