How-to guides
How to generate QR codes in bulk from a spreadsheet
Export a CSV with one row per code, upload it, and download a ZIP of images, a grid PDF, or Avery-format label sheets. Verify every code decodes before printing — a systematic error found after 5,000 labels is expensive.
1. Prepare the CSV
One row per code. At minimum a column with the data; add a filename column so the outputs are identifiable:
name,data
table-01,https://example.com/menu?table=1
table-02,https://example.com/menu?table=2
table-03,https://example.com/menu?table=3
Practical rules:
- Non-sequential tokens for anything that must not be guessable.
c/0001,c/0002invites enumeration. - Avoid ambiguous characters if a human might type the value as a fallback: no
0/O, no1/l/I. - Keep values short. Every character adds modules, and in a bulk run you are printing the same mistake thousands of times.
- UTF-8 without a BOM, or the first row will carry invisible characters.
2. Upload and set the style once
Style applies to the whole batch. Set the colours, module shape, error-correction level and size before generating, not after.
For labels, match the error-correction level to the environment: Q for anything handled or outdoors, M for clean indoor use.
3. Choose an output
| Output | For |
|---|---|
| ZIP of PNG or SVG | Feeding into a design or variable-data print workflow |
| Grid PDF | Printing and guillotining |
| Avery label sheets (5160, 5163, L7160) | Printing directly onto label stock |
For label sheets, check your printer's margins before running the whole sheet — office printers drift, and a code clipped by a margin is dead.
4. Verify the whole batch
This is the step that separates a bulk run from a bulk mistake. Every code should be rasterised and decoded before it goes to press. UseQR's bulk tool does this automatically and reports any row that failed.
A systematic encoding error — an unescaped character, a truncated column, a payload too long for the chosen size — is invisible in a preview and obvious after 5,000 labels.
5. Print a stress proof
Print one sheet at 90%, 80% and 70% of the intended size and scan each. If the intended size only just works, you have no margin for press variation across a long run.
Doing it programmatically
curl -X POST "https://useqr.app/api/v1/qr/batch" \
-H "Content-Type: application/json" \
-d '{"items":[{"data":"one"},{"data":"two"}]}'
Up to 100 items per call, no key required. Chunk larger runs.
FAQ
How do I make hundreds of QR codes at once?
Prepare a CSV with one row per code and run it through a bulk generator that returns a ZIP, a grid PDF or label sheets. UseQR's bulk tool is free with no row limit.
Should I verify bulk-generated codes?
Yes, every one. A systematic encoding error is invisible in a preview and becomes obvious only after the print run. Decode-verification catches it in seconds.
What should my CSV contain?
At minimum a data column. Add a name column so outputs are identifiable. Use UTF-8 without a BOM, and non-sequential tokens for anything that should not be guessable.
Can I print bulk QR codes onto label sheets?
Yes — Avery 5160, 5163 and L7160 layouts are supported directly. Test one sheet first, because office printer margins drift.