A product list in, print-ready labels out. Check digits are validated before anything is generated, so a typo never reaches the printer.
Your spreadsheet is read and rendered on this device. Nothing in it is uploaded.
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.
Every type uses the same three columns. Only code is required.
| Column | What goes in it |
|---|---|
code | EAN-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. |
label | Optional text printed above the bars, such as a product name. Up to 48 characters are printed. |
filename | Optional name for that row's file in the ZIP. Characters Windows rejects become dashes, and repeated names are numbered. |
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:
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.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.
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.
EAN-13, EAN-8, UPC-A, Code 128 and ISBN. Each has its own CSV template with the right columns.
SVG. Bar widths stay mathematically exact at any print size, which is what a scanner measures. PNG is fine for screens and documents.
No. The CSV is read in your browser and every barcode is drawn there. Your product data never reaches a server.
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.