Skip to content

Bulk QR code generator

Upload a CSV and get every code back in one ZIP — up to 500 at a time, with your colors and logo on every one. Your list is read in the browser and never uploaded.

This decides which columns your CSV needs.

Your CSV needs these columns

url, filename

Only the required ones need values. Add an optional filename column to name each file; otherwise they are numbered. Column names are matched loosely, so “Network Name” and ssid both work.

How it works

  1. Choose what you are encoding. That determines which columns your file needs — a batch of links needs one column, a batch of Wi-Fi codes needs the network name and password.
  2. Download the template to see the exact header row, then fill it in from a spreadsheet and export as CSV.
  3. Upload it. You get a count of how many codes are ready and a list of any rows that couldn’t be built, with the reason for each.
  4. Set the colors, shapes and logo if you want them. Whatever you choose applies to every code in the batch.
  5. Download the ZIP.

Header names are matched loosely — case, spaces, hyphens and underscores are ignored, so Network Name, network_name and ssid all resolve to the same field. Add a filename column to control what each file is called; without it they are numbered in order.

Branding the whole batch

Every option from the single generator is here — colors, module and corner shapes, error correction, margin, size and a logo in the middle. Set them once and all 500 codes come out matching, which is the entire point when they are going onto the same set of badges or labels.

Styling a batch carries a risk that styling one code doesn’t: a logo or a tight color pairing that a short link tolerates can push a longer one past what a scanner can read, and you would not find out until the box of printed labels arrived. So the preview shows the densest row in your file — the one carrying the most data, with the least room to spare — and the same decode check that guards a single download runs against it. If that one survives your settings, the rest of the batch will. If it doesn’t, the ZIP button stays disabled until you loosen something.

Where a batch beats doing it one at a time

  • Event badges. A contact card per attendee, generated from the registration export.
  • Hotel and rental rooms. A Wi-Fi code per room, or one per property.
  • Asset and inventory tags. A code per serial number, named after the asset so it drops straight into a label template.
  • Table and seat markers. A distinct link per table for ordering or feedback.
  • Print runs with variable data. Named files feed directly into most variable-data printing workflows.

Your list stays on your computer

This is the part worth being explicit about, because a bulk upload is usually the most sensitive thing anyone puts into a QR tool. A customer list, a staff directory, a set of room passwords — that is exactly the data you should hesitate to paste into a free website.

Your CSV is read by your browser using the File API, parsed on your device, and turned into images on your device. No request is made and nothing is transmitted. You can verify that: open your browser’s developer tools, switch to the Network tab, and run a batch. You will see no upload, because there is nowhere for it to go — this site has no server that accepts data.

Practical notes

  • 500 rows per batch. The work happens on your machine, and this keeps the tab responsive. Larger jobs split cleanly into several files.
  • Choose SVG for print. Vector files stay sharp at any size and are far smaller in a ZIP. PNG suits screens and systems that need a raster.
  • Duplicate filenames are made unique. Two rows named the same would otherwise silently overwrite each other inside the ZIP, so the second gets its row number appended.
  • Bad rows are skipped, not fatal. One malformed address doesn’t stop the batch — you get everything that worked, plus a list of what didn’t and why.
  • Spot-check the output. Scan a few from the ZIP before committing to a print run, and check the printed size for the labels they are going on.