Free Tool

Free Bulk QR Code Generator - CSV to QR Codes

A free bulk QR code generator that turns a CSV, an Excel export, or a pasted list into hundreds of QR codes at once. Preview in the browser, download a ZIP of PNG or SVG files. No signup.

Downloads qr-codes.zip with one file per row and manifest.csv. Everything is rendered in your browser; nothing is uploaded.

Preview

Paste a list or upload a CSV to preview the first codes here.

No signup required
Free forever
GDPR compliant
Powered by U2L

Quick Answer

A bulk QR code generator creates many QR codes in one run from a list of values instead of one at a time. Paste one value per line or upload a CSV, map the content and filename columns, pick size, format, colours, and error correction, and download every code as a ZIP with a manifest. The U2L Bulk QR Code Generator processes up to 1,000 rows in your browser. Free, no signup.

Quick Facts

  • Generates up to 1,000 QR codes per batch from a pasted list or a CSV file, all in the browser - nothing is uploaded.
  • Reads RFC 4180 CSV: quoted fields, embedded commas, doubled quotes, and CRLF line endings, with automatic header detection.
  • Exports PNG at 256, 512, or 1,024 px, or resolution-independent SVG, with your foreground and background colours and margin.
  • Error correction L, M, Q, or H - recovering roughly 7%, 15%, 25%, or 30% of a damaged code (ISO/IEC 18004).
  • Optional label under each code, drawn from your filename or label column, for asset tags, table numbers, and badges.
  • The ZIP includes manifest.csv listing row number, content, and filename so you can match files back to your spreadsheet.
  • Static codes: the content is baked into the image, so a printed code can never be changed - use dynamic codes for anything you may need to edit.

How to generate multiple QR codes at once from a CSV or list

Paste or upload, map, preview, download.

  1. 1

    Add your data

    Paste one value per line - URLs, serial numbers, WiFi strings, anything - or upload a CSV exported from Excel or Google Sheets. Empty rows are dropped and duplicates are counted.

  2. 2

    Map the columns

    For a CSV, choose which column holds the QR content and, optionally, which column supplies the filename or label. The header row is detected automatically.

  3. 3

    Set size, format, and colours

    Pick 256, 512, or 1,024 px PNG or SVG, the error-correction level, foreground and background colours, margin, and whether to print a label under each code. The first 12 codes preview live.

  4. 4

    Generate and download the ZIP

    Click Generate all. Codes are rendered in chunks with a progress bar, packed into qr-codes.zip with manifest.csv, and downloaded - all without leaving your browser.

What is a Bulk QR Code Generator?

Bulk QR Code Generator is a tool that creates many QR codes in a single run from a spreadsheet or a pasted list, instead of generating them one by one. Each row becomes its own image, named from your data, and the whole set is delivered as a ZIP so you can drop it straight into a label template, a print layout, or a product database.

One-at-a-time generators work fine for a poster. They fall apart when you need a code for each of 400 product SKUs, 250 event badges, 60 restaurant tables, or 1,200 asset tags. Copying each value into a form, downloading, and renaming the file takes about a minute per code, so a batch of 500 is a full working day. A bulk QR code generator does the same job in under a minute and, more importantly, names every file predictably so it can be matched back to the row it came from.

The input is usually a CSV exported from Excel, Google Sheets, Airtable, or an inventory system. One column holds the content to encode - a URL, an ID, a serial number, a WiFi string, a vCard - and another holds a human-readable label. The generator reads the CSV, renders a QR code for every row using the same size, colours, and error-correction settings, and writes the files into an archive. A manifest records the mapping.

This generator runs entirely in your browser: the CSV is parsed with JavaScript, each code is rendered by the qr-code-styling library onto a canvas or an SVG element, and the ZIP is assembled client-side with JSZip. That matters when the data is a customer list, an internal asset register, or unpublished product URLs - nothing leaves your machine.

How does a Bulk QR Code Generator work?

Parsing comes first. Pasted text is split on line breaks, trimmed, and stripped of empty lines. A CSV upload goes through an RFC 4180 parser: fields are separated by commas, a field wrapped in double quotes may contain commas and line breaks, a literal double quote inside a quoted field is written as two quotes, and rows end in CRLF or LF. The parser walks the text character by character so a URL containing a comma inside quotes stays intact. If the first row contains no URL-like or numeric-only cells while later rows do, it is treated as a header and used to name the column choices.

Each row's content is then checked. Blank cells are removed, exact duplicates are counted (and removed when the dedupe toggle is on), and anything longer than 2,000 characters is flagged: a QR code holds at most 2,953 bytes in byte mode at error-correction level L, and a code that long is version 40 with 177x177 modules, which is impractical to print or scan. Typical content is far smaller - a 40-character URL fits in version 3 (29x29 modules) at level M, which has 53 bytes of capacity.

Rendering uses qr-code-styling, the same library behind U2L's single-code generator. For PNG output a canvas instance is created per code at your chosen pixel size, the modules are drawn in the foreground colour on the background colour with the margin you set, and when the label option is on a second canvas adds a text band below the code in the same colours. For SVG output the library emits vector paths, so the file scales to any print size without pixelation and stays small - usually 2 to 6 KB per code.

Generation runs in chunks of ten rows with a yield to the browser between chunks, so the progress bar updates and the page stays responsive on a 1,000-row batch. Every file is added to a JSZip archive under a filename taken from your label column (sanitised to letters, digits, hyphens, and underscores) or, failing that, a zero-padded row number. A manifest.csv listing row, content, and filename goes in last, the archive is compressed, and the browser downloads qr-codes.zip.

Use Cases

How marketers, businesses, and developers use bulk qr code generator.

CSV to QR code for product labels

Export your catalogue with SKU and product-page URL columns, map the URL to content and the SKU to filename, and download a ZIP where SKU-1042.png is the code for SKU 1042. The names slot straight into a label-printer template or a print-on-demand packaging workflow.

Event badges and tickets

Generate a code per attendee that encodes a check-in URL or a unique ticket ID. Use the label option to print the attendee name under the code so staff can match badges without scanning, and keep error correction at Q or H because lanyards get scuffed.

Asset tags for IT and facilities

Encode the asset ID or a link into your inventory system for every laptop, monitor, projector, or tool. A 512 px PNG at 2.5 cm prints cleanly on a laminated sticker; the manifest.csv gives your asset register the exact filename for each ID.

Restaurant table codes

One code per table pointing at the ordering or menu URL with ?table=12 appended, labelled Table 12 below the code. Pair it with /tools/menu-qr-code-generator for the single-code design, then batch the table variants here.

Real-estate signs and brochures

Agents managing dozens of listings generate a code per property linking to the listing page or a virtual tour. Use 1,024 px PNG or SVG for yard signs that are scanned from a car window several metres away.

Batch QR codes for WiFi across rooms

Hotels and coworking spaces with a network per floor or room paste a list of WIFI:T:WPA;S:...;P:...;; strings and get a code for each. Build one string with /tools/wifi-qr-code-generator, then edit it per network in your spreadsheet.

Campaign links with UTM tags

Build tagged URLs with /tools/bulk-utm-builder - one row per channel, placement, or store - then paste the output here to get a code for each. For click analytics on every code, shorten the links in U2L first so scans are reported per campaign.

Serial numbers and warranty cards

Manufacturers encode a serial number or a warranty-registration URL with the serial as a parameter. Plain-text serials are compact (numeric mode packs 3.3 bits per digit), so even long serials produce small, easy-to-scan codes.

Developers bypassing a mass QR code generator API

When you need codes once rather than on every request, a browser batch beats writing a script against a QR image API. For programmatic generation inside your own app, see /tools/qr-code-api; for a one-off batch, this page is faster.

Bulk QR Code Generator vs Alternatives

Side-by-side feature and pricing comparison with the top alternatives.

FeatureU2LQR Code Monkeybulkqrcodegenerator.comQuickChart
Bulk generation is free50 rows free
CSV upload with column mappingVaries
Rows per batch1,000Varies50 free / 1,000 paidVaries
PNG and SVG outputPaidVaries
Error-correction level choiceVariesVariesVaries
Label printed under each codeVariesVariesVaries
Processed in your browserVariesVariesVaries
manifest.csv in the ZIPVariesVariesVaries

Bulk QR Code Generator vs QR Code Monkey and paid bulk tools

QR Code Monkey's free generator is excellent for a single designed code with a logo and custom eyes, and its paid PRO tier adds bulk creation, editing, and scan tracking as part of a subscription. For a marketing team that wants dynamic codes with analytics on every batch, a paid platform is a reasonable choice.

For a static batch - asset tags, serials, table numbers - paying a monthly fee for a one-off job is hard to justify. This tool covers the batch itself for free; when you do want editable, trackable codes, U2L's dashboard generates them from short links with per-scan analytics.

Bulk QR Code Generator vs A spreadsheet formula calling a QR image API

Google Sheets users often use =IMAGE() with a QR API URL to render codes next to each row. It is quick to set up and needs no download. Excel has no equivalent without a script or add-in.

The result is a live preview, not a file: you cannot export 400 images from a sheet, the codes are rendered on someone else's server every time the sheet loads, and the API can change or rate-limit. A batch download gives you named files you own, generated locally.

Best Practices

Put a label column in your CSV

A filename like 0042.png tells you nothing on a print sheet. Add a column with the SKU, table number, or person's name and map it as the label. The tool sanitises it into a safe filename and, with the label toggle on, prints it under the code.

Size codes for the scanning distance

A reliable rule of thumb is a code at least one tenth of the distance it will be scanned from: 2.5 cm for a hand-held label, 10 cm for a poster read from a metre away, 50 cm for a sign scanned from across a room. Add the quiet zone on top.

Pick the error-correction level on purpose

L (7%) gives the smallest code and suits clean screens; M (15%) is the default for most print; Q (25%) or H (30%) survive scuffed labels and let you overlay a logo. Higher levels add modules, so keep them for codes that will be handled.

Use SVG for anything going to a printer

A PNG has a fixed pixel size and blurs when scaled up. SVG is resolution-independent and 2 to 6 KB per code. Choose PNG when the destination is a label printer or a web page that needs a raster image.

Keep the quiet zone at four modules

The margin setting adds blank modules around each code. The standard asks for four; cutting it to save space is the most common reason a printed batch scans poorly. Leave the default unless your layout already provides white space.

Keep contrast high and the dark colour dark

Scanners expect dark modules on a light background. Navy on white and black on cream work; yellow on white and light grey on white do not. If you brand the colour, test the first code with /tools/qr-code-scanner before generating the batch.

Shorten long URLs before encoding

A 120-character URL with UTM tags needs a dense version-7 code; a 22-character short link fits version 2. Shorter content means bigger modules at the same print size and faster scans. Batch-shorten in U2L, then paste the short links here.

Print a proof sheet first

Generate the batch, print the first page at final size on the final stock, and scan three codes with two different phones. Glossy paper, dark stock, and thermal label printers each change how a code reads; a proof costs a sheet, a reprint costs a day.

Common Mistakes to Avoid

Uploading an .xlsx file

Excel's native format is a zipped XML workbook, not text. Save As or Download as CSV (UTF-8) from Excel or Google Sheets first, then upload the CSV.

Leaving Excel's semicolon delimiter in place

Excel in many European locales exports CSV with semicolons. This parser expects commas, so a semicolon file arrives as one column. Change the list separator or export with comma delimiters.

Encoding editable content in static codes

A URL that will move, a menu that changes, or a promotion that ends belongs in a dynamic QR that points at a short link. Static codes printed on 500 boxes cannot be updated - only reprinted.

Picking 256 px for print

256 px is fine for a screen or a 2 cm label. At 300 DPI it is only 2.2 cm wide; scaled larger it softens. Use 1,024 px or SVG for posters and signage.

Ignoring the duplicate count

Duplicate rows produce duplicate files with suffixed names, which usually means a spreadsheet error upstream. Check the count before generating, or turn on dedupe if identical codes are intended.

Trusting the preview instead of a scan

A code can render perfectly and still fail on a phone because of low contrast or a cramped quiet zone. Download one, print it, and scan it before committing to the full batch.

Technical Specifications

InputPasted list (one per line) or CSV file (RFC 4180: quotes, escaped quotes, CRLF)
Batch cap1,000 rows per run; split larger sets into several CSVs
Content limitRows over 2,000 characters are flagged; QR byte-mode maximum is 2,953 bytes (version 40-L)
OutputPNG at 256 / 512 / 1,024 px or SVG; foreground and background colour; margin in modules
Error correctionL 7%, M 15%, Q 25%, H 30% (ISO/IEC 18004)
LabelOptional text band below the code (PNG), from the label column or the content
Archiveqr-codes.zip with one file per row plus manifest.csv (row, content, filename)
Librariesqr-code-styling for rendering, JSZip for the archive, both loaded on demand
PrivacyParsed, rendered, and zipped in your browser. No data sent to U2L.

Industry-Specific Use Cases

Retail and e-commerce

Product tags, shelf labels, and packaging inserts get a code per SKU linking to the product page, a how-to video, or a reorder form. Map SKU to the filename so the print vendor can place codes by name.

Events and conferences

Badges, tickets, and session posters each carry a unique code. Encode a check-in URL with the attendee ID as a parameter and print the name under the code; use level Q so scuffed badges still scan.

Facilities and logistics

Asset registers, maintenance checklists, and pallet labels rely on codes that encode an ID or a link into the tracking system. Numeric IDs produce compact codes that scan quickly from a handheld reader.

Hospitality

Table ordering, room WiFi, and in-room service menus each need a code per table or room. Generate the set from one spreadsheet with the table or room number as the label.

Frequently Asked Questions

What is a bulk QR code generator?

It is a tool that creates many QR codes in one run from a list or spreadsheet, one code per row, and delivers them as a set of named files. It replaces generating and renaming codes one at a time.

How do I generate multiple QR codes at once from a CSV?

Export your sheet as CSV, upload it, choose the content column and an optional label column, set the size and format, and click Generate all. The codes download as a ZIP with a manifest that maps each file to its row.

Is the bulk QR code generator free?

Yes. Up to 1,000 codes per batch, PNG or SVG, no watermark, no signup, and no limit on how many batches you run. Everything is processed in your browser.

Is my CSV uploaded to a server?

No. The file is read with the browser's File API, parsed with JavaScript, and the codes and ZIP are built locally. Your data never leaves your device.

Can I make QR codes from an Excel file?

Save the workbook as CSV (UTF-8) from Excel first - File, Save As, CSV UTF-8 - then upload that file. Excel's .xlsx format is a zipped workbook and is not read directly.

How do I name the files?

Map a column as the filename or label. Values are sanitised to letters, digits, hyphens, and underscores, and duplicates get a numeric suffix. With no label column, files are numbered 0001, 0002, and so on in row order.

What is the maximum number of QR codes per batch?

1,000 rows per run. Larger sets should be split into several CSV files. The cap keeps memory use predictable in the browser while the ZIP is assembled.

Why does a row show as too long?

Content over 2,000 characters is flagged because the resulting code would be near the 2,953-byte ceiling, with 177x177 modules that are impractical to print. Shorten the content - for URLs, use a short link.

Why did my CSV come through as one column?

The file probably uses semicolons or tabs as separators, which Excel does in several locales. Re-export with commas, or open the CSV in a text editor and check the delimiter.

Why do some generated codes fail to scan?

The usual causes are low contrast between the chosen colours, a margin set to zero, or a 256 px PNG printed large. Use dark on light, keep the four-module margin, and export at 1,024 px or SVG for print.

Are the QR codes static or dynamic?

Static. The content is encoded directly in the image and cannot be changed after printing. For codes whose destination may change, or where you want scan analytics, create dynamic codes from short links in U2L.

Can I add a logo to every code in the batch?

Not in this batch tool; it renders plain codes for reliability at scale. For a single branded code with a logo and styled corners use /qr-code-generator, and for a batch with logos generate them from your U2L dashboard.

What does the error-correction setting change?

How much of the code can be damaged and still read: L about 7%, M 15%, Q 25%, H 30%. Higher levels add modules, so the code is denser at the same size. M suits most print; Q or H suits labels that get handled.

PNG or SVG - which should I choose for bulk QR codes?

SVG for print and layout software: vector, tiny files, scales to any size. PNG for label printers, web pages, and systems that need raster images; pick 1,024 px if the code may be printed larger than a few centimetres.

How is this different from a QR code API?

An API such as /tools/qr-code-api generates codes on demand inside your own application. This page is for a one-time batch from a spreadsheet, with no code to write and no server involved.

Can I generate QR codes for WiFi, vCards, or plain text in bulk?

Yes. The content column can hold any text - WIFI: strings, BEGIN:VCARD blocks (quote multi-line fields in the CSV), phone numbers, or IDs. The tool encodes the text as given; it does not add a prefix.

What is in manifest.csv?

Three columns: row (the source row number), content (the exact text encoded), and filename (the file inside the ZIP). Import it back into your spreadsheet to join files to records.

How do I check the codes before printing?

Download the ZIP, open a few files, and scan them with /tools/qr-code-scanner or a phone. Print one page at final size on the final material and scan it with two different devices before the full run.

Key Terms

CSV
Comma-separated values: a plain-text table where each line is a row and commas separate cells. RFC 4180 defines quoting for cells that contain commas, quotes, or line breaks.
Static QR code
A code whose content is encoded directly in the image. It works forever and needs no server, but cannot be edited after printing.
Dynamic QR code
A code that encodes a short redirect link. The destination can be changed later and each scan can be counted, at the cost of depending on the redirect service.
Module
One black or white square in a QR grid. Version 1 has 21x21 modules; each higher version adds four per side up to 177x177 at version 40.
Quiet zone
The blank margin around a QR code, four modules wide by the standard, that lets a scanner separate the code from its surroundings.
Error correction level
The share of a QR code reserved for Reed-Solomon recovery data: L 7%, M 15%, Q 25%, H 30%. Higher levels survive more damage but need more modules.

Need codes you can edit after printing?

Static batches are perfect for IDs and serials. For campaign links, menus, and anything that might change, U2L dynamic QR codes point at short links you can redirect any time and report every scan by date, country, and device.

Sign up free