QR codes, by the batch.
Paste one payload per line or import CSV. Generate PNG or SVG files and download a ZIP, entirely in your browser.
3. Save your batch
Download ZIPAdd your records to begin.
Records appear in source order. Filenames start with the source record number (a CSV header counts as record 1). Unsafe filename characters are replaced and long names are shortened. The ZIP contains successful images only.
| Record | Preview | Filename | Status | Download |
|---|
How it works
- Add lines of text, or choose CSV and select the payload and filename columns.
- Choose an image format, error correction and module scale. Generate your batch.
- Review the numbered results. Download the ZIP or individual images, then test a scan before sharing.
Your content stays in this tab.
File reading, CSV parsing, QR encoding, image export and ZIP creation run in your browser. Inputs are not uploaded, logged or saved in browser storage. Encoded URLs are never opened. Reset clears inputs and releases downloads. QR codes contain readable data, not encryption.
Frequently asked questions
How should I format my CSV?
Use comma-separated UTF-8 CSV; semicolon or tab delimiters are not detected, so re-export such files with commas. Choosing a .csv file switches the input format to CSV. A byte order mark at the start of the text is ignored in both input formats. The defaults expect a header followed by filename in column 1 and payload in column 2. Change the column numbers for your file or turn off the header option. Quoted commas, doubled quotation marks and newlines inside quoted fields are supported. Payload whitespace is preserved; blank payloads are reported as errors. Extra columns are ignored. Source record numbers include the header and count a multiline quoted field as one record.
What happens if a record fails?
Other records continue. Empty payloads, malformed CSV and content beyond the encoder's QR capacity get individual errors. An unclosed CSV quotation mark makes the remaining text one failed record because its later boundaries cannot be determined reliably. The ZIP includes only successful images, in input order, with the same names shown in the table. Filename labels longer than 180 bytes are shortened so every entry can be extracted; the record number keeps shortened and duplicate names unique. Payloads are never changed.
What limits apply?
The encoder selects QR versions 1–40; capacity depends on the payload and correction level. There is no separate record or text-length cap. Output is limited by actual browser memory and canvas support. The current archive writer uses classic ZIP, so it cannot produce ZIP64 archives (65,535 entries or roughly 4 GiB). If ZIP creation fails, completed individual downloads remain available. If your browser cannot create PNG images, use SVG.
Can I cancel or change a batch?
Cancel terminates processing immediately and keeps completed individual downloads. A cancelled run has no new ZIP, and your records and settings stay as they were. Editing the records or any setting clears the previous results so a download always matches the form; generate again to refresh them. Repeating a batch produces identical images; only the timestamps stored in the ZIP differ. Reset also clears the input. Changing a static code requires regenerating it; there are no tracked redirects or dynamic codes.
Will every scanner read these codes?
Images use black modules on white with a four-module quiet zone. Keep the margin, avoid stretching, and use a practical print size. Numeric and compatible uppercase content use compact encoding; other text uses UTF-8. Reader handling of Unicode and structured payloads can vary. Test actual downloaded codes with the apps your audience uses.
Need a structured Wi-Fi or contact payload? Try the QR Code Generator.