Free · No sign-up · No watermark

How to Bulk Generate QR Codes

Never made a QR code in bulk before? You're in the right place. This tutorial walks through the whole process in plain language, from writing your first list to downloading a folder full of ready-to-print codes.

No coding, no design skills, and no software to install — if you can type into a spreadsheet, you can do this.

Before you start

What you'll need.

Step by step

From spreadsheet to ZIP, in four easy steps.

01

Write down what you want to encode

A CSV is just a spreadsheet saved in the simplest possible format — think of it as a plain list, one row per QR code you want to make. Here's how to build one:

  1. Open a new spreadsheet in Google Sheets, Excel, or Numbers.
  2. In the very first cell (A1), type data — this header row is skipped automatically, so it's just a label.
  3. Below it, type one thing you want turned into a QR code per row.
  4. Optional: in the second column, give each row a name. That becomes the downloaded file's name.
datafilename
https://mystore.comhomepage
https://mystore.com/menumenu
https://mystore.com/contactcontact

Once your list is ready, save it as a CSV:

Google Sheets

  1. File
  2. Download
  3. Comma Separated Values (.csv)

Excel

  1. File
  2. Save As
  3. CSV (Comma delimited) (*.csv)

In a hurry? Skip straight to the ready-made starter file below and come back to this later.

02

Choose how your codes should look

On the Bulk generator page, set the style for the whole batch — every code you generate will share it, so it's worth doing before you upload anything.

  • Size — how big each code prints. Medium works for most uses; go larger for posters.
  • QR color & Background — pick any colors you like. If they're too close to each other, a warning appears — that's your cue that a scanner might struggle to read it.
  • Center image / logo — optional. Adds your logo to the middle of every code in the batch.
  • Error correction (under Advanced options) — controls how much of the code can be damaged, smudged, or covered by a logo and still scan correctly. Higher settings are more forgiving but look slightly busier. If you're adding a logo, leave this on High — the tool actually does this for you automatically.
  • Border style — rounded or sharp corners around the logo.
03

Upload your CSV file

Scroll to the CSV file field and choose the file you just saved. It's read instantly — you'll see a line like “3 rows ready to generate” appear right away.

That number is worth a glance before you continue: if it's higher or lower than you expected, open your CSV back up and look for a stray blank row or an extra comma before generating anything.

04

Generate and download your codes

Click Generate ZIP. Every row is rendered with the style you picked and packed into one file called qr-codes.zip, which downloads straight to your browser's usual downloads folder.

A ZIP is just a folder squeezed into a single file. To open it, double-click it on Mac or Windows — it unpacks into a regular folder full of PNG images, one per row, named however you set them up in step 1. From there, print them, drop them into a document, or upload them anywhere images go.

Try it yourself

Not ready to make your own list yet?

Copy this starter file into a spreadsheet, save it as a CSV, and upload it — you'll have three ready-to-scan QR codes in under a minute.

data,filename https://www.wikipedia.org,wikipedia https://www.google.com,google https://www.anthropic.com,anthropic
CSV format reference

What to put in the data column, per type.

Bulk rows are encoded exactly as written — there's no type picker to format them for you. Copy the pattern that matches what you're generating.

Tip: Website and Text rows are plain values, so they need no special formatting. Every other type below has a specific string format the code expects — copy the example, then swap in your own values.

Website

Just the URL. It's used exactly as written, so include the protocol.

https://example.com/product/42

Text

Whatever you want the scanner to read — no formatting needed.

Thanks for shopping with us! Show this at checkout for 10% off.

Wi-Fi

The WIFI: string below. T is WPA, WEP, or nopass (leave P empty for nopass).

WIFI:T:WPA;S:CoffeeShop-Guest;P:sunshine123;H:false;;

Email

A mailto: link. Subject and body are optional and must be URL-encoded.

mailto:hello@example.com?subject=Question&body=Hi%20there

Phone

A tel: link with the number, digits and a leading + only.

tel:+15551234567

SMS

SMSTO:, the number, a colon, then an optional starter message.

SMSTO:+15551234567:Thanks for signing up!

Contact card (vCard)

A full vCard block. In Excel or Google Sheets, just press Alt/Option+Enter for line breaks inside the cell — the app quotes it correctly on export.

BEGIN:VCARD VERSION:3.0 N:Rivera;Jordan;;; FN:Jordan Rivera ORG:Acme Studio TEL:+15559876543 EMAIL:jordan@example.com URL:https://acme.example.com END:VCARD

Location

geo: plus latitude,longitude. Add ?q=...(label) to show a pin label.

geo:40.6892,-74.0445?q=40.6892,-74.0445(Statue%20of%20Liberty)

Event

A full VCALENDAR block. Dates use YYYYMMDDTHHMMSS (no dashes or colons) in the scanner's local time.

BEGIN:VCALENDAR VERSION:2.0 PRODID:-//qrlama//QR Generator//EN BEGIN:VEVENT UID:launch-2026@example.com DTSTAMP:20261001T120000Z DTSTART:20261015T180000 DTEND:20261015T210000 SUMMARY:Product Launch Party LOCATION:400 Pier St, San Francisco, CA DESCRIPTION:Join us for drinks and a live demo. END:VEVENT END:VCALENDAR

Payment

There's no provider picker in bulk mode — use the finished link for whichever provider each row needs.

PayPal: https://paypal.me/harborcafe/25 Venmo: https://venmo.com/harborcafe?txn=pay&amount=25&note=Thanks Cash App: https://cash.app/$harborcafe/25 Bitcoin: bitcoin:bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh?amount=0.001
Troubleshooting

Common mistakes, and how to fix them.

FAQ

Frequently asked questions.

Do I need to know how to code?

No. If you can type into a spreadsheet, you can bulk-generate QR codes — there's no code, formulas, or special software involved.

Can I mix different QR types in one batch — like some links and some Wi-Fi codes?

Yes. Each row is used exactly as written, so one CSV can freely mix a website link, a Wi-Fi code, and a phone number, as long as each row is already written in the format that type needs (see the reference table below).

Is there a limit to how many I can make at once?

Up to 500 rows per CSV file. Need more? Just split your list into a few files and upload them one after another.

Does this cost anything?

No — it's free, with no sign-up and no watermark on your codes.

What if I don't want custom filenames?

Leave the second column out entirely. Each file is automatically named after its own content instead.

My CSV won't upload — what's wrong?

Make sure it's saved as a .csv file (not .xlsx or .numbers) and has at least one row of data below the header row.

Ready to generate your batch?

Set your style, upload your CSV, and download every code as one ZIP.

More QR code tools

Every other type, one click away.