99tools

Batch QR & Barcode Generator

runs in your browser

Make a QR code or a barcode for every row of a CSV and download them as one zip. Check digits verified, bad rows named, all in the page.

Drop a file here, or .

A CSV, or paste one below. One code is made for each row.

The list

about this tool

A column in, a folder out

Drop a CSV or paste a list, choose which column holds the value, and get one code per row packed into a zip. The separator is worked out the same way the CSV Cleaner does it — by counting candidates outside quotes and taking the one that is consistent — and the first row is treated as headings only when it looks like headings, so a bare list of numbers is not silently missing its first entry.

The codes themselves are made by the same encoders as the single-code tools: the QR library the QR tool uses, and the EAN, UPC, Code 128, Code 39 and ITF encoders written for the barcode generator.

Rows that cannot be encoded

A QR code holds anything, so nothing is refused. A barcode is a different matter: EAN-13 is thirteen digits whose last one is a check digit computed from the other twelve, EAN-8 and UPC-A have their own lengths, Code 39 takes a limited alphabet, and ITF needs an even number of digits.

Every row is checked against those rules before anything is drawn, and the ones that fail are listed with the reason and left out. That matters more than it sounds: a generator that quietly encodes a number with the wrong check digit produces labels that scan, but scan as something else. A twelve-digit EAN is accepted and its check digit worked out, which is the ordinary way to write one.

Names and formats

Files are named after the value, or after another column if you choose one. Characters a file system will not take are replaced, names are cut to sixty characters, and a name that appears twice gets a number, because a folder cannot hold two files with the same name.

SVG is the right choice for anything that will be printed: sharp at any size, editable, and a fraction of the bytes, which adds up over hundreds of files. PNG is there for the places that will not take an SVG.

Limits

Everything is drawn in the page one code at a time, so several hundred takes a moment and the tool says so. There is no page layout: this produces individual files, not a printable sheet of labels. Colour is black on white, since a scanner wants contrast. Nothing is uploaded and nothing is stored between visits.

For a single code rather than a sheet of them, use the QR code generator or the barcode generator. If the source spreadsheet is ragged or wrongly encoded, CSV cleaner will fix it before you generate anything, and zip inspector opens the archive that comes out.

questions

What does it take as input?
A CSV, a tab or semicolon separated file, or just a list with one value per line, dropped or pasted. The separator is worked out for you, the first row is treated as headings when it looks like headings, and you choose which column holds the value and which, if any, holds the file name.
What happens to a row that cannot be encoded?
It is listed, with the reason, and left out of the zip. A barcode symbology has rules — EAN-13 is thirteen digits with a check digit that has to match, Code 39 takes a limited alphabet — and a generator that quietly encoded a wrong number would produce labels that scan as the wrong product. A QR code takes anything, so nothing is refused there.
SVG or PNG?
SVG for anything that will be printed: it is sharp at any size and a fraction of the bytes, which matters across hundreds of files. PNG only where something downstream will not take an SVG. At a few hundred codes the difference in the size of the zip is considerable.
How are the files named?
After the value, or after another column if you pick one. Characters a file system will not take are replaced, names are cut to sixty characters, and a name used twice gets a number, since a folder cannot hold two files of the same name.
Is my list uploaded?
No. The list is read, the codes are drawn and the zip is built in this page. Nothing leaves your device and nothing is stored between visits.