Back to articles

Published · September 23, 2026

How to Make Hundreds of QR Codes at Once From a Spreadsheet

You don't need to generate QR codes one at a time. Put one unique value per row in a spreadsheet, run it through a bulk generator, and get hundreds of ready-to-print codes back in a single ZIP file. This guide covers spreadsheet structure, tool options, and the mistakes that produce broken or duplicate codes.

Quick answer

Put one unique value per row in the first column of a CSV — usually a URL, but it can be an ID, a ticket number, or a Wi-Fi string — then run that file through a bulk QR code generator. Most tools hand back a ZIP file with one PNG or SVG per row, ready to drop into labels, badges, or packaging. It's the same idea whether you're generating 20 codes for a small event or 2,000 for a warehouse's worth of inventory.

Step-by-step

Structure the spreadsheet first. Give the first column exactly one unique value per row — a full URL is safest, since it works with every generator without extra setup. Keep anything else you'll need later (a name, a label, a badge number) in separate columns; don't mix it into the column the tool is going to encode.

Run the batch. Upload the CSV to a bulk generator and it reads the first column as one QR code per row, returning a ZIP of individual PNG or SVG files. Building this into a script instead of a one-off batch? A batch API typically handles up to 1,000 codes per request.

For mail-merge or per-recipient codes, keep a dedicated URL column plus a second column the merge step will fill in with the generated image link — that's the structure mail-merge tools expect when inserting a different QR code into each outgoing email. If the generated images live in a shared drive folder for the merge to pull from, open link-sharing on that folder first — a private file breaks the embedded code for every recipient.

Common problems and fixes

Two rows share the same value. If a URL repeats, those rows produce identical, indistinguishable codes. Dedupe the column first, and if you need to tell scans apart later — which item got scanned, which recipient opened it — route each row through its own short link instead of one shared destination.

Codes look denser than you expected. Longer values need more modules to encode, which is why a full tracking URL looks busier than a plain word. Error correction adds to that — the four standard levels recover 7%, 15%, 25%, and 30% of the code, and higher recovery means less room for data at a given size. If a batch is going to print small, shorten the URLs first, and check how small a QR code can actually be printed before locking in badge dimensions. If the destination might change after printing, a dynamic QR code solves that — the printed code stays the same while the link behind it updates.

Filenames don't match the rows you expect. Most bulk tools name output files by row order, not by content, so double-check a sample against your source spreadsheet before printing — a mismatch here is the easiest way to end up with the wrong code on the wrong badge.

Doing this on QRDock specifically

Before a full print run, scan a handful of the generated codes with QRDock to confirm each one opens the destination you meant — no ads, no tracking layered onto that check. If the batch needs to stay editable after printing, that's a sign you want a dynamic or short-link layer rather than static URLs baked into each code; see QR code analytics for what tracking a batch of scans looks like once the codes are out in the world. For quick one-off codes and scans in the meantime, qrdock.app works with no signup.

Frequently Asked Questions

What's the fastest way to make hundreds of QR codes at once?

Put one unique value — usually a URL — per row in the first column of a CSV, then run it through a bulk QR generator that accepts CSV upload. Most tools return a ZIP of individual PNG or SVG files, one per row, in seconds.

Does every QR code need to be different?

Only if you need to tell the codes apart later, for tracking, personalization, or per-item routing. If every code should just open the same page, you only need one QR code, not a batch.

Can I generate QR codes for a spreadsheet in Google Sheets directly?

Yes, with a short Apps Script loop that calls a free QR API for each row and writes the image link back into the sheet, though a dedicated bulk-CSV tool is faster for a one-off batch of hundreds of codes.

What file format should I use for printed QR codes?

SVG for anything that will be resized or professionally printed — badges, packaging, signage — since it stays sharp at any size. PNG is fine for on-screen use or a standard label printer.

Why do some of my batch-generated QR codes look denser than others?

Density scales with how much data is encoded. Rows with long URLs produce visibly busier codes than rows with short ones, which can make them harder to scan from a distance. Shorten URLs before generating if the batch will be printed small.

Conclusion

Making hundreds of QR codes doesn't take hundreds of trips through a generator — one column of unique values in a CSV, one bulk-generator pass, one ZIP file of ready-to-print codes. The workflow is the same whether the batch is 20 codes or 2,000; only the size of the file changes.