Bulk barcodes

A product list in, print-ready labels out. Check digits are validated before anything is generated, so a typo never reaches the printer.

1 · What are you making?

CSV
url-template.csv url, filename
Drop the filled template back here Up to 50 rows · CSV from Excel, Google Sheets or Numbers
or paste rows from a spreadsheet

2 · Style — the same controls as the single barcode tool

#111111
#ffffff

Preview — first 6 rows

Advertisement
Advertisement

Your spreadsheet is read and rendered on this device. Nothing in it is uploaded.

How it works

Paste or upload a list of product codes and the page encodes each row with the same first-party encoders as the single barcode tool — check digits computed and verified per row, so one typo in a spreadsheet becomes one flagged row, not a printed label that fails at the till.

Alongside each batch you get a print-size note: the size each file prints at, quiet zones included, as a percentage of the GS1 nominal size, with a warning when the bars are shorter than the GS1 minimum height. The size control runs from 80% of nominal, below which many laser scanners struggle, to 200%, the retail maximum. The print-sheet mode lays the finished codes out on A4 or US Letter at a size you choose in millimetres, with cut marks.

Your product list never leaves the tab — parsing, encoding and the ZIP are all local.

Preparing the spreadsheet

Every type uses the same three columns. Only code is required.

ColumnWhat goes in it
codeEAN-13: 12 digits, or all 13 to have the check digit verified. EAN-8: 7 or 8. UPC-A: 11 or 12. Code 128: up to 48 printable characters. ISBN: ISBN-10 or ISBN-13, dashes allowed, converted to the 978 barcode.
labelOptional text printed above the bars, such as a product name. Up to 48 characters are printed.
filenameOptional name for that row's file in the ZIP. Characters Windows rejects become dashes, and repeated names are numbered.

Format the code column as Text before typing

Spreadsheets store anything that looks like a number as a number, and a product code is not one. Two things then happen on export, and both change the code:

  • Leading zeros disappear. 0614141000418 becomes 614141000418. Twelve digits is also a valid input here (the tool adds the check digit), so the row would quietly become a different product code. When putting the zero back gives a valid check digit, the row is now flagged with the code it probably was.
  • Long codes turn into scientific notation. A code such as 4006381333931 can be saved as 4.00638E+12, and every digit after the sixth is gone for good. Rows like that are refused, because nothing can recover them.

The fix is the same for both: set the column to Text (in Excel, Format Cells → Text; in Google Sheets, Format → Number → Plain text) before entering or pasting the codes, then export. A column that is already damaged has to be re-entered from the original list. From spreadsheet to printed labels walks through the whole job, sizes included.

Bulk barcode questions

Are check digits calculated for a whole product list?

Yes. Enter 12 digits per row for EAN-13 and the 13th is computed; enter all 13 and it is verified instead, with the correct digit reported before anything is generated.

Which symbologies can I generate in bulk?

EAN-13, EAN-8, UPC-A, Code 128 and ISBN. Each has its own CSV template with the right columns.

Should I download PNG or SVG for printing?

SVG. Bar widths stay mathematically exact at any print size, which is what a scanner measures. PNG is fine for screens and documents.

Is my product list uploaded?

No. The CSV is read in your browser and every barcode is drawn there. Your product data never reaches a server.

Why does the size slider stop at 80%?

80% of the GS1 nominal size is the smallest a retail barcode may be printed and still be reliably read by laser scanners. The slider refuses to go lower so a batch cannot silently produce labels that fail at the till. At the other end it stops at 200%, the retail maximum.