How to make 300 static QR codes from a spreadsheet, free
Making one QR code is easy. Making 300 (one per table, product, asset or guest) by hand is a lost afternoon. This guide shows the spreadsheet-driven way, compares the free options, and explains when a paid tool is actually worth it.
Disclosure: this guide is published by bulk-qr, and step 3 uses our free tool. The alternatives below are genuinely free too. Pick whichever fits your workflow.
1. Static or dynamic? Decide first
- Static codes store the URL or text directly in the pattern. Free, no account, never expire, and no third party sees your scans. You can't change where a printed code points.
- Dynamic codes store a short redirect link owned by a QR service. You can change the destination and see scan counts, but they usually need a subscription, and if it lapses the printed codes can stop working.
- Middle ground: make static codes that point to a URL on your own domain (for example
yourdomain.com/menu/table-12). You can change what that page shows anytime, without a QR subscription.
2. Format the spreadsheet
One row per code. A url column holds what gets encoded; an optional label column names the file and is printed under the code.
url,label https://example.com/menu?table=1,Table 1 https://example.com/menu?table=2,Table 2 ACME-IT-000101,Laptop 000101
- Generate sequences with fill-down, or a formula like
="https://example.com/menu?table="&ROW()-1. - Remove blank rows and stray spaces. A trailing space becomes part of the encoded URL.
- Keep labels unique so file names don't collide.
- Save as CSV (File → Download → CSV in Google Sheets; Save As → CSV in Excel), or keep the .xlsx file.
3. Generate the codes in one batch
- Open the bulk QR code generator.
- Upload your CSV or Excel file. It is processed in your browser, not uploaded.
- Choose a ZIP of PNG + SVG files (named by label) or a single PDF with labels, on a plain grid or Avery 5160/5163/L7160/L7163 sheets.
- Print one page and scan several codes with a phone before printing everything.
4. Free alternatives
- Google Sheets IMAGE formula. Put a URL in A2 and use
=IMAGE("https://quickchart.io/qr?text="&ENCODEURL(A2))(or another public QR image API). It is quick for previewing in a sheet. Downsides: every value is sent to that third-party API, getting images out of Sheets as separate files is awkward, and it depends on that API staying available. - Mail merge / label software. Word mail merge (with a QR field), or label designers such as Avery Design & Print, can generate codes from a data file. Good if you already design labels there.
- A short script. If you code, Python's
qrcodepackage or Node'sqrcodelibrary can loop over a CSV in a few lines. This gives full control at the cost of setup. - Paid QR platforms. Worth it only if you need scan analytics or editable dynamic codes.
5. Print checklist
- At least about 2–2.5 cm (0.8–1 in) wide for close scanning; larger for distance or long URLs.
- Dark code on a light background with a white margin around it.
- Use SVG for professional printing so the code stays sharp at any size.
- Test a printed sample, not just the on-screen image.
Use-case guides
- Restaurant table QR codes
- Asset tag QR codes
- Product label QR codes
- Avery label QR codes · Excel to QR codes · CSV to QR code
Questions
On bulk-qr, up to 1,000 rows per batch; run several batches for more. The Google Sheets method has no hard limit but you still need a way to export the images.
No. The content is encoded in the pattern itself. A static code only stops working if the URL it points to stops working.
When you need scan analytics, or must change the destination of codes that are already printed and you can't control the URL they point to.
Yes. Serial numbers, asset IDs, Wi-Fi strings and similar text all work in the url column.