← ExcelToQR generator
Home › Guides › Bulk QR codes from a spreadsheet

Bulk QR code generation from a spreadsheet

Generating one QR code is trivial — dozens of sites do it. Generating four thousand, each encoding a different row, and keeping every code attached to the record it belongs to, is a different problem entirely. That second problem is what a spreadsheet-driven generator solves: the row is the unit of work, and the codes come back inside the workbook rather than as a folder of loose image files.

Start a bulk generation →

Why loose image files are the wrong output

Most bulk tools hand you a ZIP of PNGs named qr_1.png through qr_4000.png. That sounds fine until you need to print them, because now you have to map every filename back to the right record — and one off-by-one error silently gives four thousand people the wrong badge.

Embedding each code in its own row removes that entire class of mistake. The code and its data are in the same row, so mail-merge picks up the correct pairing automatically, and sorting or filtering the sheet keeps them together.

The realistic options, compared

Approach Good for The catch
One-at-a-time web generator Under 10 codes Utterly impractical beyond that; manual copy-paste guarantees errors
VBA macro Recurring in-house jobs Produces .xlsm files that many IT policies block; breaks when the image API it calls changes
Python script Repeatable pipelines Needs a developer and an environment; overkill for a one-off batch
Spreadsheet-driven web tool One-off and occasional batches of any size Requires uploading the file

Clean the data before you generate

Nearly every failed bulk run traces back to the source data rather than the codes. Four checks catch almost all of it:

Always test twenty rows first. Generate a small sample, print one code on the actual printer and label stock, and scan it with the actual device. Screen previews hide every problem that matters — density, contrast, quiet zone, laminate glare. Discovering a sizing error after printing four thousand labels is an expensive way to learn it.

Keep the payload small

There is a direct relationship between how much you encode and how well the code scans. More characters means more modules, which means each module is physically smaller at the same printed size, which means the camera needs to be closer and the print needs to be sharper.

In practice, encoding one identifier produces a sparse, forgiving code that scans instantly from a phone at arm's length. Encoding six columns of descriptive text produces a dense grid that needs good light and a steady hand. If a lookup on your side can turn an ID into the full record, encode the ID and nothing else.

Planning a large run

  1. Decide the payload — usually a single identifier column.
  2. Clean the sheet using the four checks above.
  3. Sample twenty rows, print, and scan a physical code.
  4. Run the full file. Expect it to take proportionally longer than the sample; a separate image is rendered per row.
  5. Archive the output workbook. This is the step people skip and regret. Keeping it means a single damaged label can be reprinted months later without regenerating anything.

What about very large files?

Time and output size both scale with row count, because every row means one more rendered image inside the workbook. For very large registers it is often more practical to split the file into batches — by department, site or category — which also gives you smaller, more manageable print runs and a natural checkpoint between them.

Frequently asked questions

How many QR codes can I generate at once?

Every data row in the first worksheet is processed in one pass. There is no fixed row limit, but larger files take proportionally longer because a separate image is rendered for each row.

Why is my bulk generation slow?

Each row requires rendering a QR image and embedding it in the workbook, so time scales with row count. Encoding fewer columns produces less dense codes and a smaller output file.

Should I use a VBA macro instead?

Macros turn the workbook into an .xlsm that many organisations block, and macros that call an external image API break when that service changes. For a one-off batch the overhead rarely pays off.

Can I generate QR codes for only some rows?

Filter or delete the rows you do not need before uploading. Rows where all the selected columns are empty are skipped automatically rather than producing an empty code.

What is the most common mistake in a large batch?

Printing the whole run without scanning a test code first. Size, contrast and quiet-zone problems are invisible on screen and only appear once physical labels exist.

Upload your spreadsheet →