Bulk QR codes from a CSV: a guide for inventory, events and product labelling
13 June 2026
If your data already lives in a spreadsheet, you're nearly there. One clean column, one row per code, and bulkqr does the rest. Spend five minutes tidying the file first, though. It beats regenerating the whole batch because one cell was wrong. Here's the shape to aim for, then three real examples.
Get the spreadsheet right first
A QR code holds whatever text you give it. So your job is one clean column of exactly that text, one row per code.
- One row per code. No merged cells. No blank spacer rows.
- A payload column. The exact thing each code should hold — a full URL, a
SKU, a WiFi string. Put the whole value in the cell. Don't count on the tool to
bolt on
https://or a domain unless you know it does. - A label column. Optional, but do it. A readable name per code so your
downloads aren't
qr-1.png,qr-2.png. "Aisle-4-Shelf-B" beats a number when you're sticking these on shelves.
Then the usual traps:
- Encoding. Save as UTF-8 if you've got accents or symbols, or they'll turn up as gibberish.
- Stray spaces. A trailing space turns a URL into a different code that might
- Trim the column.
- Duplicates. Are the repeats deliberate (a code per ticket) or a slip (a bad paste)? De-dupe the ones that shouldn't be there.
Export as CSV, then paste or upload the payload column into bulkqr. For getting a whole list in at once, see how to generate lots of QR codes at once.
Example 1 — Inventory
You want a code per SKU or shelf spot, pointing at a stock record or product page.
- Payload column: the URL to each item's record — or the SKU itself, if your scanning app looks it up.
- Label column: the location or SKU, so the printed sheet explains itself.
- Output: lay the batch out as printable PDF labels, print onto a label sheet, stick them on shelves or bins.
Set the design once and every label matches — same size, same quiet zone, same error correction. For a warehouse or a walk-in fridge, push the error correction up so a scuffed label still reads.
Example 2 — Events
You want a unique link per ticket, table, or guest.
- Payload column: a personalised URL each — a check-in link, a seat page, an itinerary.
- Label column: the guest name or ticket ID.
- Output: download as a ZIP and drop each code into a ticket template or place-card.
Because up to 100 codes are built in your browser and nothing's uploaded, your guest list never leaves your laptop.
Example 3 — Product labelling
You want a code per product or variant, printed on the packaging.
- Payload column: the URL per variant — a landing page, a how-to, a registration form.
- Label column: the variant name or barcode number.
- Output: a ZIP of images for your packaging designer, or PDF labels for a short run.
One warning. A marketing QR on the box is not the code that scans at the checkout. Need that one? Read QR codes on retail products that scan at the till before you design the packaging.
Design once, print, done
Working from a CSV means you touch the design once and it rides along on every row. Set your size, colour, and error correction, check a couple of codes, download the lot. Scan one on a cheap phone before the print run — the basics in what makes a good QR code apply to every code in the batch.
Spreadsheet ready? Turn it into a batch of codes, or jump straight to printable labels.