A practical, step-by-step walkthrough for turning a spreadsheet of SKUs or product codes into hundreds of scannable barcode files — including the leading-zero trap that silently corrupts retail barcodes, and how to validate rows before you export.
If you have ever tried to turn a product spreadsheet into barcode images, you already know the painful part is not the barcodes — it is the data. A column of UPC codes silently loses its leading zeros, one row has a letter in a numeric field, and the batch you just exported has forty files that will never scan.
This guide walks through the whole workflow: preparing the sheet, picking the right symbology, mapping columns, validating every row, and exporting files your printer and scanner will both accept.
Spreadsheets treat barcode values as numbers. Barcodes treat them as text. That single mismatch is behind most bulk-generation failures.
When Excel sees 03600029145 it stores 3600029145 — a perfectly valid number, and a broken UPC. Nothing warns you. The cell still looks right in a narrow column, and the damage only becomes visible when a scanner refuses the printed label.
If Excel already stored the value as a number and dropped a leading zero before you upload, no tool can reliably recover it — the digit is simply gone. Fix the column formatting first, then re-enter or re-import the affected values.
Before you generate anything, get the sheet into a shape a generator can read without guessing.
file_name column if you want control over exported file names rather than defaulting to the code itself.barcode_type column only if your rows genuinely mix symbologies, and only use supported values.A clean sheet looks like this:
Format the column as Plain text (Format → Number → Plain text), then either export as CSV or copy the rows straight into a paste box — tab-separated columns can be mapped the same way an uploaded file can.
Upload a CSV or Excel file, map one column, and preview every row before exporting.
Symbology is not a style choice — each type accepts different characters and enforces different rules. Picking the wrong one is the second most common cause of failed batches.
| Type | Accepts | Best for |
|---|---|---|
| Code 128 | Letters, numbers, common symbols | SKUs, inventory IDs, serial numbers, warehouse bins |
| Code 39 | Uppercase letters, digits, limited symbols | Legacy systems and simple alphanumeric labels |
| EAN-13 | 12 or 13 digits + check digit | International retail products |
| UPC-A | 11 or 12 digits + check digit | North American retail and POS |
| EAN-8 | 7 or 8 digits + check digit | Small product labels |
| ITF-14 | 13 or 14 digits + check digit | Cartons, cases and shipping packaging |
The short version: if the code is internal — a SKU, a bin number, an asset tag — use Code 128. If the code is a retail product identifier you were issued, use the type that matches its digit count.
“Code 128 is the safe default for anything you made up yourself. Retail symbologies are for numbers somebody issued to you.”
— Rule of thumb for picking a symbology
Column mapping is where you tell the generator which column actually holds the value to encode. Only one mapping is genuinely required:
A good tool will suggest a mapping from your header row, but you should always confirm it before generating. An auto-guess that picks the wrong column produces a batch that looks fine and encodes the wrong data.
Validation is the step people skip, and it is the one that saves the print run. Before exporting, every row should be checked against the rules of its symbology:
Good validation is row-level and non-destructive. You should see exactly which row failed and why — “Row 19 has an invalid check digit” — and fixing one row should never clear the other 499.
Recalculating a check digit or adding a leading zero changes the encoded number. That should always be an explicit choice you confirm, never something applied automatically in the background.
Different outputs suit different jobs. Choosing badly here is what produces blurry barcodes that scan inconsistently.
| Format | Use it for | Watch out for |
|---|---|---|
| SVG | Print, packaging artwork, anything resized later | Nothing — vector is the safest choice |
| PNG | Quick digital use, slide decks, internal docs | Export at a high scale factor, not default size |
| ZIP | Getting hundreds of files out at once | Check for duplicate file names before exporting |
| Printable label sheets and thermal labels | Must print at 100% scale, never ‘fit to page’ |
Prefer SVG whenever the barcode will be printed. It is vector, so it stays sharp at any size. Use high-resolution PNG when you specifically need a raster file, and set the output scale deliberately rather than accepting a default canvas size.
Paste or upload, validate every row, then export SVG, PNG, ZIP or a PDF label sheet.
A barcode that looks perfect on screen can still fail at the scanner. Most print failures come down to four things:
For 4×6 or 2.25×1.25 thermal labels, the PDF page size must match the label roll size. Printer drivers and label stock vary, so verify your printer’s actual label size rather than assuming a preset matches it.
One boundary worth being clear about: a barcode generator creates the image of a code. It does not create the code itself.
A tool can calculate and validate a check digit, and it can render a scannable image from a value you provide. It cannot issue, register, license or verify official UPC, EAN, GTIN or GS1 numbers. For official retail product identifiers, get your numbers from GS1 or your local GS1 member organization, then use a generator to render the artwork.
The same applies to marketplaces: rendering a valid-looking barcode does not make a product identifier acceptable to a given platform. Requirements vary by marketplace, category and brand, so check the platform’s current product-ID rules before you print anything at volume.
On this page
Upload a CSV or Excel file, map your barcode column, and preview every row before you export a single file.
Free · no signup · browser-side
We build free, browser-side barcode tools and write about the practical side of getting codes out of spreadsheets and onto labels that scan.
Ready when you are
Paste your codes or upload a CSV/Excel file, validate every row, and export PNG, SVG, ZIP or print-ready PDF labels — free, with no signup.