Skip to main content
QrZeo
← BlogWorkflows

Generating Thousands of QR Codes Without Losing Track of Them

Making one code is trivial. Making one per table, per asset or per shipment — and knowing which is which six months later — is the actual problem.

QrZeo TeamMay 13, 20262 min read

Why one code is rarely enough

A single code on every table tells you the menu was opened four thousand times. It cannot tell you the patio outperforms the back room three to one, because there is nothing to compare.

The same logic applies to campaigns across placements, equipment across a site, and shipments across a day. One code per thing is what turns a total into an answer — and it is why bulk generation exists.

The CSV route

Build a spreadsheet with one row per code and the destination in the first column. Export as CSV, drop it into Bulk mode, and you get one real code per row sharing a single batch design. A header row is detected and skipped automatically, so an unedited export usually works.

Set the design once before generating: shape, foreground, background. Changing it afterwards means regenerating the batch, and if any of them are already at the printer, that is a problem you would rather not have.

The API route

When codes need to exist as part of a flow you already run — one per order, per asset, per seat — the API is the better fit. POST /v1/qr returns the code along with SVG and PNG URLs you can drop straight into a label or document template.

Use a test key anywhere the value could leak into logs or a shared environment, and a live key only server-side. Keys are scoped per workspace and revocable independently, so one compromised integration does not force you to rotate everything.

Naming is the part everyone skips

Two hundred codes called "final" and "final-v2" is not a hypothetical. It is what happens when naming is left until after generation, and it makes the analytics worthless — you cannot act on a number you cannot attribute to a physical thing.

Name codes for the artefact rather than the campaign: "Table 14 — patio", not "menu code 7". Put them in a folder for the venue or campaign, tag them for the things that cut sideways like "print" or "2026", and the set stays navigable a year later when somebody asks which code is on the sign in the lobby.

QrZeo Team
Written by the team building QrZeo
FAQ

Questions from this article

How many rows can one CSV have?
Up to 10,000. Only the first column is read — a bulk run is a list of destinations, and matching a column schema would be a worse trade than ignoring the rest.
Can I change a whole batch of destinations later?
Yes, if the codes are dynamic. Filter to the folder and update them together; the printed patterns are untouched.

Make your first QR code in under a minute

Free plan, no credit card. Unlimited static codes forever, and three dynamic ones so you can watch re-pointing work before you pay for it.

24 content types · Static & dynamic · PNG & SVG · Free forever plan