Bulk QR code generator from a CSV or a pasted list
Turn a spreadsheet into hundreds of QR codes at once. The bulk QR code generator takes a CSV or a pasted list, applies one style to every row and delivers a ZIP of named PNG or SVG files. Every code is static and never expires. It is free with no sign-up, made entirely in your browser, and sample-verified by a real scanner before you download.
Export from Excel, Numbers or Google Sheets as CSV. Quoted fields and a UTF-8 BOM are fine.
How to use the bulk QR code generator
- Export your sheet from Excel or Google Sheets as CSV with a header row, then click Upload CSV. If you only have a list of links, paste them into Or paste one entry per line instead.
- Map the columns: Content column for the link or text, and optionally Label column for captions and Filename column for file names.
- Choose the Content type: URL, Text, Wi-Fi (columns ssid, password, encryption) or Contact (mapped columns).
- Pick a Style preset and the Output: PNG, SVG or PNG + SVG. Tick Include CSV manifest and choose a Label sheet PDF layout, A4 3×8 or Letter 2×5, if you want one.
- Check the first five previews and the validation report, then click Generate ZIP. Use Cancel if you need to stop.
Bulk QR code generator details
The bulk tool runs the same encoder and styling engine as the single-code pages once per row in a background worker, then packs the results into a ZIP, all on your device.
Preparing the CSV
Export from Excel or Google Sheets as CSV with a header row. The parser handles quoted fields, Windows line endings and the byte-order mark Excel writes at the start of the file. One column holds the content; others can hold a label and a file name. If you only have a list of links, skip the file and paste them into the text box, one per line.
Content types
URL rows are normalised like the single generator: https:// is added when missing and spaces are flagged. Text rows are encoded as they are. Wi-Fi batches need columns named ssid, password and encryption, one network per row. Contact batches map columns to vCard fields such as name, organisation, phone and email, one person per row.
Limits, validation and speed
The limit is 1,000 rows per batch, with a warning above 300 because the ZIP and the label sheet grow accordingly. Rows that fail validation are listed with the reason and skipped; the rest of the batch continues. The first five codes are previewed before you generate anything. A 500-row batch of plain URL codes finishes well under a minute on a laptop, with a progress bar and Cancel while it runs.
Verification
By default the first, the last and every 25th code are decoded with the ZXing engine and compared byte for byte with their source rows; decoding every code would roughly double the time and is available as an option. Because all rows share one style, a passing sample means the style is safe, and a failing one, typically an oversized logo or a pale colour, stops you before you print a thousand bad labels.
The ZIP, names and label sheets
Files are named qr-{type}-{label}.png or .svg, taking the label from the Filename column when mapped, otherwise the Label column, otherwise a slug of the content. Include CSV manifest adds a CSV listing each row’s content, label, file name and result. Label sheet PDF lays the codes out with captions on A4 (3 by 8, 24 per page) or Letter (2 by 5, 10 per page) for sticker sheets and shelf labels. Check any file afterwards with the QR code reader, and read the size guide before choosing a label size.
This code never expires
Each file in the ZIP holds its own row's content as a plain static code, so a batch of a thousand labels keeps working without any service behind it. This is a static QR code: the data is written into the pattern, so scanning it needs no server, no account and no subscription. There is nothing to renew and no redirect that can be switched off, which is why a code made here keeps working for as long as the printed copy exists. The trade-off is honest: a static code cannot be edited after printing and does not count scans. If you need either, encode a link to a page you control. Read how static and dynamic codes differ, and if a code you already have has stopped working, see why QR codes expire.
Styling, formats and print size
Every code can be styled in the Style panel: six dot shapes, corner shapes, solid or gradient colours, a transparent background, a quiet zone of 0–8 modules, and your own logo up to 30 percent of the width. A contrast checker warns below 3:1 and blocks downloads below 1.5:1, and after each change the preview is decoded again so the badge tells you whether the styled code still scans.
| Output | Best for | Notes |
|---|---|---|
| PNG | Web, documents, quick prints | 256 to 4096 px; transparent background supported |
| SVG | Designers and print shops | Vector, scales without limit; logo embedded |
| Printing at an exact size | Vector modules at a chosen width in mm or inches, optional caption | |
| JPG | Platforms that reject PNG | White background; no transparency |
| EPS | Legacy print workflows | Vector from the module matrix, no logo |
| Copy / Print | Pasting into a document; a quick paper test | PNG to the clipboard; print view with caption |
Print size: as a rule of thumb the code should be at least one tenth of the scanning distance wide, with the quiet zone included.
| Scan distance | Minimum width |
|---|---|
| 0.5 m (arm's length) | 5 cm |
| 1 m | 10 cm |
| 2 m | 20 cm |
| 5 m | 50 cm |
Label sheets place each code with its caption on A4 (3×8) or Letter (2×5) at a size suited to stickers and shelf labels; for larger prints use the SVG files from the ZIP.
The QR code size guide has a calculator for module size, DPI and distance.
Frequently asked questions
Is the bulk QR code generator free for large batches?
Yes, up to 1,000 rows per batch, with no account, no watermark and no per-code charge. Larger lists can be split into several batches. Because the work happens on your computer rather than on a server, there is no reason to meter it.
How do I make QR codes from an Excel or Google Sheets file?
Save the sheet as CSV: in Excel use Save As and choose CSV UTF-8; in Google Sheets use File, Download, Comma-separated values. Keep the header row, upload the file, pick the column that holds the links and generate. Quoted cells and Excel's byte-order mark are handled.
How are the files named?
Each file is named qr-{type}-{label} with the right extension, for example qr-url-table-12.png. The label comes from the Filename column if you mapped one, otherwise the Label column, otherwise a slug made from the content, so the files match your sheet.
What happens to invalid rows?
They are listed in a validation report with the row number and the reason, such as an empty cell, a malformed address or a missing SSID, and then skipped. The rest of the batch continues, so one bad row never stops the other 499.
Is every code verified?
A sample is: the first, the last and every 25th code are decoded with the same scanner engine the single-code pages use and compared byte for byte with the source rows. Since all rows share one style, a passing sample shows the style is safe; full verification is an option.
Does my spreadsheet get uploaded?
No. The CSV is parsed in your browser, the codes are drawn in a background worker on your device and the ZIP is assembled locally. Nothing is sent to a server, and closing the page discards everything, including any Wi-Fi passwords or contact details in the sheet.
What is in the ZIP and the manifest?
One PNG and/or SVG per valid row, named as above, plus the optional label sheet PDF. The optional manifest is a CSV with one line per row listing the content, the label, the file name and whether the row was generated or skipped, for reconciling with the original sheet.
Related
Last updated . QR Code is a registered trademark of DENSO WAVE INCORPORATED. Open-source engines are listed on the how it works page.