How to Create a Barcode in Excel (and When Not To)
The first result for “how to create a barcode in Excel” is always the same advice: install a barcode font, type your number, and the cell turns into stripes. What that advice never says is that the stripes are not a barcode — they are a picture of one that most scanners will refuse. This guide shows why the font route fails, and walks through the method that actually works when your data lives in a spreadsheet: get the column out of Excel intact, batch-generate real symbols from it, and print them on labels that scan.
Why barcode fonts are a trap
A barcode font maps characters to bar patterns, and that is all it does. It does not add the start and stop characters a symbology requires, it cannot compute a check digit, and most free fonts only cover Code 39 — which cannot even encode a lower-case letter. A Code 128 font without the encoder behind it prints bars that look plausible and decode to nothing, because the start/stop and checksum characters the standard demands were never drawn.
The failure is silent in the worst way: the sheet looks finished, the print run goes out, and the first complaint arrives from the warehouse — “your new labels don’t scan”. Fonts also break the moment the data does: a digit added to one cell changes the symbol’s proportions, and nothing in Excel warns you. Symbology rules live with the encoder, not the typeface.
The method that works: batch-generate from your column
The reliable workflow keeps Excel for what it is good at — holding a column of numbers — and hands encoding to a tool that knows the symbology. With a browser-based generator the loop is short:
- Pick the symbology first. Retail numbers are EAN-13 or UPC-A; logistics strings are Code 128; digits-only internal codes can be Interleaved 2 of 5. The symbology decides the data rules, not the other way around.
- Clean the column in Excel. Trim stray spaces, remove header rows, and format the cells as text before pasting — a GTIN stored as a number silently loses its leading zero, which is the single most common batch failure.
- Paste the column into the batch panel. A local generator such as QrDeco accepts pasted CSV columns and one line per symbol — no plug-in, no upload, and the data never leaves the machine.
- Check the error column. A real encoder rejects a 12-digit string where EAN-13 expects 13, or letters where the symbology wants digits — fix those rows at the source, not on the printed label.
- Print on the label stock. A4 sheet layouts with the right label geometry come out of the print view; verify one printed label with a real scanner before committing the whole sheet.
Choosing the symbology for common Excel jobs
- Product numbers
- EAN-13 (or UPC-A in North America) — but only with a GS1-licensed prefix; see the retail guide below.
- SKU / inventory codes
- Code 128 — full ASCII, dense, and any ordinary scanner reads it.
- Asset tags
- Code 39 where a legacy specification demands it; otherwise Code 128 is narrower and safer.
- Warehouse locations
- Code 128 with a consistent scheme (aisle-rack-level) so the scanner output parses back into locations.
- Serial numbers
- Code 128; enable the check digit and let the generator compute it.
- Digits-only counts
- Interleaved 2 of 5 — compact, but even-length digits only.
The three mistakes that ruin an Excel barcode batch
- Number-formatted cells. Excel stores 012345678905 as 12345678905 and displays it without the zero; every symbol downstream is then one digit short. Format the column as text before pasting, or paste into the generator with the leading zero intact.
- Symbology chosen after the data. A 13-digit column is not automatically EAN-13 — it is only EAN-13 if the number is a licensed GTIN with a valid check digit. Internal 13-digit serials belong in Code 128.
- Skipping the printed proof. A batch that renders on screen can still fail on the printer: label stock, scaling and driver settings all change the final bar widths. Scan one physical label before printing five hundred.
When Excel is the wrong tool entirely
If the job is one code from one number, pasting into a generator is faster than any spreadsheet workflow. If the job is hundreds of codes that must stay in sync with a database, Excel is a middleman that will drift out of date — generate straight from the source system instead. And if the codes must carry GS1 application identifiers (batch, expiry, serial), the data structure matters more than the spreadsheet: build it in the generator where each field is validated, not in concatenated cells.
Print labels that scan the first time
Batch generation and label printing live in the same place here: paste the column, review the per-row results, and print A4 sheets sized to your label stock — SVG and PDF export for the printer, PNG for screens. Everything is generated locally in QrDeco, so a customer list or unreleased SKU column is never uploaded anywhere.