// Bulk Generator

Free Bulk QR Code Generator

Generate up to 1,000 QR codes at once from a CSV file — with a consistent brand shape, a data-merge template, and a print-ready PDF sticker sheet. 100% free, client-side, no signup.

0Signup Required
100%Client-Side
PNG+SVGExport
1,000Codes per Batch
Step 1 · Choose a data source

Download the CSV template to fill in, or auto-generate a numbered sequence.

View guide
Auto-generate a numbered sequence No CSV needed
Use {n} where the sequential number should be inserted.
Max 1,000
Template format: Type, Content, Filename (optional), ForegroundColor (optional), BackgroundColor (optional)
Step 2 · Upload your CSV file

Drag & drop CSV here

or click to browse files

Map CSV columns
Data merge that overrides the Content column. Use {ColumnName} tokens to build each code's content from several columns. Available:
Preview (first 5 rows)
# Type Content Filename
Step 3 · Customize Optional

These settings apply to every QR code in the batch.

Max 200KB. Will be centered in all codes.
Brand shape — applied to every code in the batch
Step 4 · Generate QR codes
Processing... 0%

Generation complete
// 4-Step Setup

How to Use the Bulk Generator

01

Pick a data source

Fill in the CSV template, or auto-generate a numbered sequence from a URL pattern.

02

Upload and map columns

Drop in your CSV, choose the content and filename columns, and preview the first rows.

03

Set the brand look

Choose colors, a logo, the module shape and the error-correction level for the whole batch.

04

Generate and download

Get a ZIP of PNG and SVG files, or a print-ready PDF sticker sheet.

// Use Cases

Perfect For

QuickQRC
Batch Use Cases · No. 0001
Event Tickets Unique per Attendee
Generate unique codes for each attendee.
Inventory Labels Batch Tracking
Track products with QR codes.
Marketing Campaigns Print Ready
Create codes for product catalogs.
Business Cards vCard Format
vCard codes for all employees.
QuickQRC
Technical Brief · No. 0002

How the bulk QR code generator builds a batch

The bulk QR code generator turns a spreadsheet, or an auto-numbered sequence, into up to 1,000 QR codes that share one brand style, then hands them back as a ZIP of PNG and SVG files or a print-ready PDF sticker sheet. Every step runs in your browser; the spreadsheet is never uploaded.

The two ways to load your data

1. Upload a CSV

Use Download CSV Template for a file with the expected columns:

ColumnRequired?What it holds
TypeRecommendedThe payload type: url, text, vcard, wifi, email, sms, phone, location, bitcoin, calendar
ContentYesThe data to encode for that row
FilenameOptionalThe name for that code's file. Blank rows become qr_001, qr_002, …
ForegroundColor, BackgroundColorOptionalA per-row hex color that overrides the batch-wide color

After you drop the file in, a Map CSV Columns panel appears. It guesses which of your columns is the content, filename, type, and caption from their headers, and you can correct any of them. The file limit is 5 MB and 1,000 rows.

2. Content template; build each link from several columns

In the mapper, the Content template field takes {ColumnName} tokens and fills them from each row. Given columns SKU and Campaign, a template of:

https://shop.example.com/p/{SKU}?ref={Campaign}

produces a unique, fully-formed URL for every row. The template overrides the mapped Content column, so your spreadsheet only needs the raw values, not the assembled links. Pair it with the UTM builder to work out the tracking part of the pattern once.

3. Numbered series: no CSV at all

Generate Numbered Series builds the batch from a pattern. Put {n} where the number goes (https://example.com/table/{n}, or SKU-{n}; with no {n}, the number is appended), then set Start Number, Total Codes (1–1,000), and a Filename Prefix. Press Populate Batch Sequence and it fills the batch directly.

What each type produces

The Type value decides how the Content cell is turned into a payload:

TypeWhat you put in ContentWhat gets encoded
url, text, vcard, calendarThe final string (a URL, plain text, a BEGIN:VCARD block, a BEGIN:VEVENT block)Encoded exactly as given
wifiSSID:MyWiFi;Password:pass123;Encryption:WPAA properly escaped WIFI: payload
emailsupport@example.com?subject=Inquiry or a full mailto:mailto: is added if missing
sms+15551234567?body=Hellosms: is added if missing
phone+15551234567tel: is added if missing
location37.7749,-122.4194geo: is added if missing
bitcoinThe wallet addressbitcoin: is added if missing

Leave Type blank and the tool marks the row url if the content starts with http:// or https://, otherwise text.

The batch style settings

Step 3 applies to every code in the run, except where a CSV row sets its own color:

  • Logo: up to 200 KB, centered on every code at about a third of its width. Raise the error correction level if you add one.
  • Foreground / Background color: batch-wide, unless a row's ForegroundColor / BackgroundColor overrides it.
  • Size: 300, 500 (default), 1000, or 2000 px. Use 1000 or 2000 for anything that will be printed.
  • Export format: PNG only, SVG only, or both (default).
  • Error correction: L (7%), M (15%, default), Q (25%), H (30%). Every code in the batch uses the same level.
  • Brand Shape: module (dot) style, corner-frame style, and corner-center style, applied uniformly so a batch looks like a set. Square is the most reliable; the rounded and classy styles trade a little scan margin for looks.

Each code is drawn with roughly a 6% margin. That percentage does not establish an adequate quiet zone: a standard QR symbol needs at least four clear modules on every side. Inspect the exported symbol and add a light, empty border where necessary before printing. There is no live per-code preview beyond the first five rows, so check one finished code before you commit a large run.

Example: numbering 20 restaurant tables

Riverside Café wants a QR on each of 20 table tents, each pointing at the menu with its table number attached. You open Generate Numbered Series and enter:

FieldValue
URL / Content Patternhttps://riverside-cafe.example/menu?table={n}
Start Number1
Total Codes20
Filename Prefixtable_

Populate Batch Sequence fills 20 rows (table_1 … table_20), the preview shows the first five, and you set a rounded module style, the café's brand color, size 1000, PNG + SVG, error correction M. Generate QR Codes produces:

bulk_qr_codes_2026-09-11.zip ├─ png/table_1.png … table_20.png ├─ svg/table_1.svg … table_20.svg └─ manifest.csv

Then Print Sticker Sheet (PDF) → A4, the 2 × 4 layout (8 large cells per page, sized for table tents), captions on → qr_stickers_sheet_2026-09-11.pdf, three pages.

The ZIP and the PDF Sticker Sheet

The ZIP holds a png/ folder, an svg/ folder (whichever formats you chose), and manifest.csv; one row per code with its filename, type, the first 100 characters of its content, colors, timestamp, and a success or error status. Files keep the names from your Filename column.

The PDF sticker sheet reuses the codes from your last generate, so run the batch first. In its dialog you pick:

OptionChoices
Paper sizeA4 (210 × 297 mm) or US Letter (8.5 × 11 in)
Grid layout2 × 4 (8 large stickers or table tents), 3 × 7 (21 cells; verify dimensions and offsets against your label stock), or 4 × 10 (40 compact labels)
Caption under each codeOn by default: uses the mapped Caption column, or the filename
Cutting guide linesOn by default

Who uses this

  • Events: one code per ticket or badge, numbered or drawn from an attendee export, printed straight onto an Avery sheet.
  • Retail and packaging: a code per SKU built with a content template from a product spreadsheet, so the link carries the SKU and a campaign tag.
  • Warehousing and asset tracking: sequential asset tags with a consistent prefix, exported as SVG for a label printer.
  • Restaurants and venues: a per-table or per-room code, numbered, on the 2 × 4 tent layout.
  • HR and operations: a vCard code per employee from a staff list, all in one brand style.

Tips, limits, and common mistakes

  • The limits: 1,000 rows per batch, a 5 MB CSV, a 200 KB logo. Split a larger job into runs.
  • These are static codes. The content is baked into each code and can't be changed after printing. If a destination might move, point the codes at a redirect you control and edit the redirect later.
  • A mistyped Type isn't flagged. The tool doesn't stop on a bad type value; it just encodes the raw content as text. Check the preview and one finished code before a full run.
  • Numbered-series filenames aren't zero-padded. table_1, table_2 … table_10 sort out of order in a file browser. Start at a higher number, or rename after export, if order matters.
  • Wi-Fi content has its own shape. For wifi rows, the Content cell is SSID:name;Password:pass;Encryption:WPA, not a raw WIFI: string.
  • Large batches are heavy. 1,000 codes at 2000 px in PNG + SVG is a big ZIP and takes a while; the browser is doing all of it. Drop to 1000 px or one format if you don't need both.
  • Test before you print. Run one generated code through the QR Code Validator, especially if you chose a rounded style, added a logo, or used brand colors.

Decide on redirects before you generate

Once a batch is printed, the only way to change where a code goes is to have pointed it at a URL you control. If there's any chance the destinations will change (a menu, a campaign page, an event schedule) encode short redirect links now and repoint them later. Read static vs. dynamic QR codes first.

References

Need Help Getting Started?

Read our complete guide on bulk QR code generation

Browse the Knowledge Hub
// FAQ

Frequently Asked Questions

Upload a CSV with one row per code, or use Generate Numbered Series to build a sequence without a spreadsheet. Map your columns, pick a batch style, and press Generate QR Codes. Up to 1,000 codes are produced in your browser and packaged as a ZIP.

Yes. Save the sheet as CSV, keep one row per code with a Content value and optionally a Type and Filename, and drop it into the upload zone. The tool reads the headers and lets you map which column is which.

Yes. In the column mapper, fill the Content template field with a string like https://shop.example.com/p/{SKU}?ref={Campaign}. Each {ColumnName} token is replaced with that row's value, producing a unique, fully-formed link for every row.

After generation, press Download ZIP. The archive has a png folder, an svg folder for whichever formats you chose, and a manifest.csv listing every code. Files use the names from your Filename column.

After generating, choose Print Sticker Sheet (PDF) and select 2x4, 3x7, or 4x10. Check cell dimensions, offsets, and printer scaling against your stock. The 21-cell 3x7 grid is not Avery 5160, which has 30 labels per sheet.

Up to 1,000 per batch, from a CSV or a numbered sequence. It is a fixed limit to keep everything running in your browser, not a paywall.

The exported symbol contains fixed data. If it contains a maintained redirect URL, the redirect owner can change the final destination. The pattern has no built-in expiry, but websites, accounts, and domains can stop working.

No. Reading the CSV, rendering the codes, building the ZIP, and making the PDF sheet all happen in your browser. The spreadsheet and its contents are never sent to a server.