creatorvalet

Bulk QR code generator

Paste one value per line or choose a real CSV column, then receive one crisp QR PNG per row in a single ZIP.

Runs in your browser 0 bytes uploaded
Source format
Paste above or choose a .txt or .csv file
0 QR codes ready0 blank rows ignored · 0 duplicate rows kept
№ 7469WAITING

The first finished images and the ZIP receipt will appear here.

A bulk QR code generator starts with rows, not repeated forms

One destination per line is the shortest path from a plain list to a folder of images. Paste URLs, identifiers or text exactly as each scanner should return them. Empty lines are ignored and counted before generation. Duplicate values are kept and counted, because a repeated destination can be intentional when two labels belong on different objects. The tool never silently deduplicates the payload list.

For structured data, CSV mode treats the input as an actual table rather than splitting every comma. Choose the column whose cells should be encoded and, optionally, a second column whose cells should name the PNG files. A quoted label such as North, entrance stays one field. Doubled quote marks and line breaks inside quoted fields remain part of their cells. If the columns need inspection first, the CSV viewer exposes the same delimiter and row-shape problems before any images are made.

File names are labels; QR contents stay untouched

The selected value is encoded byte for byte as UTF-8 text. A file-name label is handled separately: directory segments and characters that Windows refuses are cleaned, and repeated names receive a suffix inside the ZIP. That hygiene prevents an archive entry such as ../../label.png from becoming a path. It does not rewrite the destination stored in the code.

Without a label column, names are stable sequence numbers such as qr-001.png. The number reflects output order after blank values have been removed. If row 8 has no selected value, there is no empty QR placeholder for it; the preflight summary tells you that one row was ignored. Source-row numbers remain attached during generation so an item that exceeds QR's real capacity can be reported as the row to repair.

Real progress and cancellation for large QR batches

Each matrix and PNG is encoded in a worker away from the page's controls. The progress bar advances only after a PNG file has finished, not according to a timer guessing how long the batch should take. Cancel stops the worker and leaves the source and column selections in place. You can repair a value or choose a different correction level without uploading or parsing the file again.

There is no arbitrary file-size or row-count rejection. A large source still receives a warning because the browser must hold generated PNG data while it assembles the ZIP. Memory is the practical limit: if a tab runs out, the browser may reload it. Close other memory-heavy tabs before a very large run, and divide the source when that is more reliable for your device. The source remains accepted either way.

The archive uses ZIP's store method. PNG is already compressed, so deflating it again usually saves little while spending more CPU and memory. The classic ZIP format has its own four-gigabyte structural ceiling without ZIP64. If generated output reaches that format boundary, the tool says to divide the batch instead of writing a corrupt archive that only fails after download.

Correction level changes capacity and matrix size

M is the balanced default. L leaves more room for long payloads when the files remain clean digital images. Q and H add more recovery data for codes that may be scratched or imperfectly printed, but that redundancy can increase matrix dimensions and reduce payload capacity. The batch tool uses conservative black modules, a white field and a complete four-module quiet zone. It does not place hundreds of unverified logos over the center.

When one code needs colors, a logo and a visible raster round trip, use the single QR code generator. It renders the design, decodes the resulting pixels and withholds downloads when the exact original value does not come back. Bulk and design are separate destinations because the decisions are different: this page optimizes consistent rows and one archive; the other optimizes inspection of one final artwork.

What to test after the ZIP is downloaded

The previews show the first twelve finished PNG files, while the ZIP contains every generated row. Use the QR code scanner to decode samples from the beginning, middle and end, especially when values contain Unicode or long query strings. Then test the artwork after it passes through the system that will use it. A document editor may resample an image; a label printer may soften module edges; a marketplace may add margins or recompress uploads.

This batch creates QR only. If the receiving specification names ECC 200 rather than QR, use the Data Matrix generator and keep that format's finder pattern and ECI behavior intact. Two symbols can both be square while remaining incompatible with each other's scanners.

A successful scan proves the symbol returns a string. It does not prove that a URL is safe, that a coupon is authorized or that a product record exists. For retail identifiers expected by a linear scanner, use the barcode generator and its format-specific checksums. For random or time-sortable database identifiers, the UUID generator creates the values themselves rather than turning existing values into pictures.

The table and every image stay local

Text reading, CSV parsing, QR encoding, PNG compression and ZIP writing all happen in this browser tab with code served from CreatorValet's own origin. No row is posted to a QR API, no label is logged and no analytics request carries the destination. The generated object URLs exist only in local memory and disappear when the page reloads.

That privacy promise covers processing, not publication. Anyone who receives the ZIP or sees a printed code can recover its payload. Review the selected column before generation, especially when a spreadsheet places private notes beside public URLs. Choosing the wrong column produces perfectly readable codes containing the wrong material.

Questions

Does the CSV parser handle commas inside values?

Yes. Quoted delimiters, doubled quote marks, UTF-8 text and line breaks inside quoted fields are parsed as CSV rather than split with a simple comma or newline rule. The selected value column becomes the QR payload and an optional label column becomes the file name.

What happens to blank and duplicate rows?

Rows whose selected value is entirely empty are ignored and counted before generation. Duplicate values remain separate and are counted too, because two labels may intentionally point to the same destination. File names are made unique inside the ZIP without changing any payload.

Is there a batch-size limit?

One ZIP can contain at most 65,535 PNG files because this local writer uses the widely supported ZIP32 format rather than ZIP64. Split a larger source into batches. The tool does not impose a separate source-byte limit: it warns before reading a heavy text file, and large generations run off the main thread with real progress and a Cancel button.

Are the CSV values uploaded?

No. Parsing, QR encoding, PNG compression and ZIP packaging all happen in this browser tab with self-hosted code. The source text, labels and generated images are not sent to a QR service or stored after you leave.