PRPickrack

Free Bulk QR Code Generator

Paste a CSV — generate up to 500 QR codes in one click. Download as a ZIP of PNG/SVG files. Browser-side, no upload.

6 rows detectedColumn 1 = filename (optional), Column 2 = content. 1-col CSV → filenames auto-numbered.

Generate up to 500 QR codes from a CSV in one click. Download as a ZIP of PNG / SVG. Browser-side, no upload.

Bulk QR Code Generator turns a CSV into a downloadable ZIP of QR codes — useful when you need 50 table-tent menus, 200 inventory labels, a stack of conference name-tag vCards, or any other batch of QRs that would take an hour to make one at a time. Paste your CSV, click Generate, get a ZIP.

CSV format is flexible: one column = each row's content (filenames auto-numbered qr-001 qr-002); two columns = filename,content. Output is your choice of PNG (raster), SVG (vector), or both formats per row. Up to 500 rows per batch to keep browser memory predictable — split bigger lists.

Pickrack runs the entire batch in your browser using the open-source qr-code-styling library + JSZip for archiving. Your CSV — which may contain customer names, internal URLs, or other data you don't want logged — never leaves your tab. There's no daily quota, no signup, and the ZIP downloads directly with no email-gate.

Key features

  • Up to 500 QRs per batchEnough for a restaurant menu rollout, conference badges, or inventory labels. Larger batches: split the CSV.
  • PNG + SVG outputPNG (raster, 200-1000px) for print-at-known-size; SVG (vector) for design files / vinyl printing. Pick one or both.
  • 1 or 2 column CSV1 col = content, filenames auto-numbered (qr-001.png). 2 cols = filename + content (better for organized batches).
  • Progress + cancelLive progress bar shows current row / total. Cancel button stops the batch mid-run if you spot a mistake.
  • ZIP archiveAll files compressed into one .zip download — no chasing 500 individual downloads. Filename is auto-stamped with today's date.
  • Browser-side onlyCSV + every generated QR stay in your tab. No upload, no server processing, no scan tracking on the resulting QR codes.

How to use

  1. Step 1: Paste or upload your CSVPaste directly, or click 'Upload CSV' for a .csv file. Click 'Load sample' to see the format.
  2. Step 2: Pick format + sizePNG (most common, fixed pixel size) or SVG (scalable, design-friendly). Size 200-1000px slider.
  3. Step 3: Click GenerateProgress bar shows live status. Cancel anytime. Large batches (500 rows, both formats) take ~60-90 seconds.
  4. Step 4: Download the ZIPWhen complete, a Download button appears. Unzip in any OS — no special software needed.

When to use

  • Restaurant menu QR codes — one CSV with table-1,https://menu.example/table=1 ... table-50,https://menu.example/table=50
  • Conference badges — CSV of vCard payloads, one per attendee, scanned by other attendees for instant contact
  • Inventory / asset tagsasset-001,https://internal/asset/001 for each item, printed on durable stickers
  • WiFi guest network at multi-room venue — each room gets its own WiFi QR (e.g., hotels, co-working spaces)
  • Marketing campaign A/B test — generate 100 unique URLs with UTM params, each on a different physical placement, measure scan-through later via your own analytics (Pickrack adds no tracking)
  • Self-checkout / contactless payment per product — payment-link QR per SKU
  • Product packaging serialsSN-12345,https://verify.example/sn=12345 for each unit

Frequently asked questions

Why 500-row limit?

Each QR render takes 100-300ms in the browser, and the ZIP itself uses memory. At 500 rows with both formats, total runtime is 60-90s and memory peaks around 50-100MB — predictable. Beyond that, browsers may stall or run out of memory. Split larger lists into 500-row batches.

Is my CSV uploaded anywhere?

No. The CSV stays in your browser tab. Every QR is rendered locally. The ZIP is built in memory and downloaded directly — no upload, no logging, no scan analytics on the resulting QRs.

What if my content has commas in it?

Quote the field with double quotes: "name with, comma","https://url.com". The parser handles RFC 4180-style quoted CSV. Embedded quotes can be escaped as "".

Can I customize colors / dot style / logo per QR?

v1 generates standard black-on-white square QRs for max scan reliability. Per-row customization is on the roadmap — for now, use the single-QR Generator if you need custom styling, and the bulk tool for unstyled bulk.

What goes in the 'content' column?

Any QR payload — URL, WiFi string (WIFI:T:WPA;S:Net;P:pass;;), vCard (BEGIN:VCARD...END:VCARD), tel: link, geo: link, or any text. The same formats as the single QR Generator.

What if some rows fail?

v1 continues generating other rows and skips invalid ones silently. (Invalid = empty content, or content too long for QR's 4,296-character limit.) A row-level error log is on the roadmap.

What error correction level is used?

M (Medium, ~15% damage tolerance) — the same default as the single-QR Generator. Good for clean print + decent damage resistance. If you need higher tolerance for outdoor / vinyl, generate single QRs with H correction instead.

Filename conflicts?

If two rows have the same filename, the second overwrites the first in the ZIP. Make sure filenames are unique, or use 1-column CSV and let Pickrack auto-number.

Related tools