Skip to main contentSkip to templates
All articles
guides··8 min read

How to Make QR Codes in Bulk from a Spreadsheet (CSV)

Make hundreds of styled QR codes at once from a CSV or a pasted list: how to prepare the spreadsheet, name each file, choose PNG, SVG, or print-ready files, the limits per batch, and how developers can do the same with the QR API.

tutorialbulk-qr-codesbatchcsvapiqr-codes
A dark navy QR code next to the words: Bulk QR codes from a spreadsheet, CSV to ZIP
Ozan Tunca
Ozan Tunca
Founder of Pretty QR, passionate about design and technology

To make many QR codes at once, put one link or text per row in a spreadsheet, save it as CSV, and give it to a bulk QR code generator. In Pretty QR, you design one code first (colors, shape, logo, frame), open Content → Many codes, upload the CSV or paste the list, and choose Download batch. You get one ZIP with a file for every row, in PNG, JPG, SVG, or print-ready PDF, all with the same design. A batch holds up to 500 rows; batch generation is part of Pro.

Developers can do the same from code with the QR API, which a free account can use for 100 codes a month.

When do you need bulk QR codes?

Whenever each item needs its own code with its own content:

  • Products and packaging: one code per product page or manual. See QR codes on product packaging.
  • Events: one code per session page, or per table or room.
  • Restaurants and hotels: one code per table or room, each with its own link.
  • Real estate: one code per listing for signs and flyers. See QR codes for real estate.
  • Inventory and assets: one code per item, for example a link to its record.
  • Staff badges or business cards: one code per person. See QR codes for business cards.

If everyone gets the same code, you do not need a batch. Make one code and print it many times.

How do I prepare the spreadsheet?

Make a sheet with a header row and one row per code:

  • The content column must be named content, url, link, text, data, or value. Each cell is what one QR code holds: usually a link, or plain text.
  • The name column is optional. Name it filename, file, or name. Each code is saved with that name, such as table-01.png. Without it, the files are qr-001, qr-002, and so on. A repeated name gets -2, -3 added, and characters that are not allowed in file names are replaced with -.
  • Other columns are ignored, so you can keep notes or prices in the same sheet.

Then save it as CSV:

  • Google Sheets: File → Download → Comma-separated values (.csv).
  • Excel: File → Save As → CSV UTF-8.
  • Numbers: File → Export To → CSV.

Comma, semicolon, and tab separators all work. That matters for Excel in many European languages, which saves CSV files with semicolons.

No spreadsheet? You can also paste a list, one link or text per line. Then every line is one code, and lines are not split at commas.

How do I make the QR codes in Pretty QR?

  1. Design one code in the editor, or start from a template: colors, module and corner shapes, a logo, a frame with a label. Every code in the batch gets this design.
  2. Open Content and choose Many codes. You need a Pro account; if you are not signed in, the panel shows how to sign in or buy Pro.
  3. Upload the CSV or paste the list. Pretty QR reads the rows and lists any row it cannot turn into a code, with its line number, so you can fix it or leave it out.
  4. Choose Download batch and a format:
    • PNG or JPG: 2048 px, for screens and office printing.
    • SVG: vector files for print at any size.
    • Print-ready: PDF or SVG files with bleed and crop marks for a print shop, at one size for the whole batch.
  5. Open the ZIP. It has one file per row and a manifest.csv that lists each file name with its content, so you can check which code is which.

The files are made in your browser, with the same drawing code as a single download, so a batch code looks exactly like the code in the editor.

What are the limits per batch?

LimitValue
Rows per batch500
Batches per hour20
CSV file size1 MB
Content per rowUp to 2,331 bytes, or 1,273 bytes with a logo or the shield shape

Rows over 500 are left out, and the dialog says how many. For more than 500 codes, split the sheet into several files of 500 rows.

The content limit is the most a QR code can hold. In practice, keep each link short: long links make dense codes that need more space when printed. Our QR code size guide shows how link length changes the minimum print size.

How do I check a batch before I print it?

  • Scan a few codes from the ZIP with your phone, for example the first, a middle one, and the last. Check that each opens its own link.
  • Open manifest.csv and compare a few rows with your spreadsheet.
  • Check the file names against your labels, so code table-12 goes on table 12.
  • Print one test sheet at the real size before the full run.

Do bulk QR codes expire, and can I track their scans?

Batch codes are static: each link is in the pattern, so the codes do not expire and nothing needs renewing. See how to make a QR code that never expires.

To count scans per code without dynamic links, add a different UTM tag to each row's link, for example ?utm_source=table-12, and read the visits in your web analytics. You can build those links in the spreadsheet with a formula, such as ="https://example-cafe.com/menu?utm_source=table-"&A2.

How do I make bulk QR codes with an API?

If the list comes from your own system, call the QR API once per row. POST https://pretty-qr.com/api/v1/qr returns the PNG or SVG file, with the same design options as the editor:

while IFS=, read -r name url; do
  curl -s https://pretty-qr.com/api/v1/qr \
    -H "Authorization: Bearer $PRETTY_QR_KEY" \
    -H "Content-Type: application/json" \
    -d "{\"content\": \"$url\", \"format\": \"svg\", \"design\": {\"backgroundColor\": \"#ffffff\", \"foregroundStyle\": {\"colors\": [\"#1e293b\"]}, \"moduleShape\": \"rounded\"}}" \
    -o "$name.svg"
done < links.csv

links.csv here has no header: each line is name,url. Create an API key on the API keys page.

LimitFree accountPro
API codes a month10010,000
API codes an hour1,0001,000
API keys210

The API docs list every design field, with a Postman collection and an OpenAPI file. AI assistants can use the same key through the MCP server; see how to make a QR code with ChatGPT or Claude.

What does it cost?

Batch generation is part of Pro, a one-time payment of $39 with no subscription. Pro also includes print-ready files, hosted files, a higher API allowance, and 100 dynamic links. The free editor stays free for single codes. See pricing.


One design, one spreadsheet, one ZIP. Design your code in the editor, then open Content → Many codes.

Questions? [email protected]

Frequently asked questions

How do I make many QR codes at once?

Put one link or text per row in a spreadsheet and save it as CSV. In Pretty QR, design one code in the editor, open Content, choose Many codes, upload the CSV or paste the list, and choose Download batch. You get one ZIP with a QR code file for every row. Batch generation is part of Pro.

How many QR codes can I make in one batch?

Up to 500 rows per batch, and up to 20 batches an hour, so up to 10,000 codes an hour. The CSV file can be up to 1 MB. Rows over the limit are left out, and the dialog says how many.

Can I choose the file name of each QR code?

Yes. Add a column named filename, file, or name to the CSV. Each code is saved with that name. Rows without a name are saved as qr-001, qr-002, and so on, and a repeated name gets -2, -3 added.

What format should my CSV be in?

One header row with a column named content, url, link, text, data, or value, and one row per QR code. Comma, semicolon, and tab separators all work, so a CSV saved from Excel in any language is fine. Without such a header, every line is read as one code.

Do bulk QR codes expire?

No. Batch codes from Pretty QR are static: each link is in the pattern, so the codes work as long as the links work, with nothing to renew.

Can I make bulk QR codes with an API?

Yes. POST /api/v1/qr returns a PNG or SVG for one code, so a script can loop over a spreadsheet. A free account can make 100 codes a month through the API; Pro can make 10,000 a month and 1,000 an hour.