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.
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 batch — Enough for a restaurant menu rollout, conference badges, or inventory labels. Larger batches: split the CSV.
- PNG + SVG output — PNG (raster, 200-1000px) for print-at-known-size; SVG (vector) for design files / vinyl printing. Pick one or both.
- 1 or 2 column CSV — 1 col = content, filenames auto-numbered (qr-001.png). 2 cols = filename + content (better for organized batches).
- Progress + cancel — Live progress bar shows current row / total. Cancel button stops the batch mid-run if you spot a mistake.
- ZIP archive — All files compressed into one .zip download — no chasing 500 individual downloads. Filename is auto-stamped with today's date.
- Browser-side only — CSV + every generated QR stay in your tab. No upload, no server processing, no scan tracking on the resulting QR codes.
How to use
- Step 1: Paste or upload your CSV — Paste directly, or click 'Upload CSV' for a .csv file. Click 'Load sample' to see the format.
- Step 2: Pick format + size — PNG (most common, fixed pixel size) or SVG (scalable, design-friendly). Size 200-1000px slider.
- Step 3: Click Generate — Progress bar shows live status. Cancel anytime. Large batches (500 rows, both formats) take ~60-90 seconds.
- Step 4: Download the ZIP — When 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 tags —
asset-001,https://internal/asset/001for 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 serials —
SN-12345,https://verify.example/sn=12345for 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
QR Code Generator
Free QR codes for URL, WiFi, vCard, crypto, VietQR + 5 more. Custom shapes, gradient, logo overlay, scan-me frame. PNG or SVG.
QR Code Scanner
Decode QR codes from an image upload or live camera. Detects URL, WiFi, vCard, email, phone, SMS, location, calendar event.
Password Generator
Generate cryptographically strong passwords. Length, symbols, numbers, exclude similar — all configurable.