How we tested bulk QR generation across 7 tools
We built three test CSV files in May 2026: a 100-row file (small campaign), a 1,000-row file (mid-size print run), and a 5,000-row file (enterprise event lanyard scenario). Each row contained a unique URL, a label, and a target category — the kind of data structure a real bulk job carries.
We ran each file through all 7 generators on their paid tier (we cancelled afterward), then measured: time to upload, time to process, time to download, total file size of the output, whether the output ZIP contained correctly named files (URL-based or label-based filenames), the per-code cost at the tier required to handle that volume, and any silent failures (rows skipped, malformed output, duplicate IDs).
The scan-rate baseline is identical to our custom QR generator test — we sampled 50 codes from each batch and printed/scanned them on an iPhone 15 Pro, Pixel 8, and Galaxy S24 Ultra under three lighting conditions. The output format checks reference the standard PNG specification for resolution and color depth requirements.
The results below are throughput numbers from the 1,000-row run. The 5,000-row run exposed the silent caps — three generators we won't name in this section refused the upload entirely or required splitting into smaller batches without telling us upfront.
Quick comparison: 7 bulk generators side by side
Headline trade-offs. Per-generator notes follow.
| Generator | Max batch (single upload) | Pricing | Per-code cost @ 1,000 | Output format |
|---|---|---|---|---|
| EZQR Lite/Pro/Max | 5,000 static / 1,000 dynamic | $5–$20/mo monthly | $0.005 (Lite) | ZIP of PNG + SVG |
| QR Tiger Premium | 10,000 dynamic | $37/mo annual ($444/yr) | $0.037 | ZIP of PNG + CSV |
| Uniqode Pro | 5,000 dynamic | $49/mo annual ($588/yr) | $0.049 | ZIP of PNG |
| Beaconstac (legacy) | 5,000 dynamic | $49/mo annual | $0.049 | ZIP of PNG |
| QRCode Monkey | 1 at a time (no bulk) | Free | N/A (manual) | Single PNG/SVG |
| QR Code Generator (Bitly) | 500 dynamic | $35/mo monthly | $0.07 | ZIP of PNG |
| Canva | Manual loop (no native bulk) | $15/mo annual | N/A (manual) | Per-design PNG |
1. EZQR — Best monthly-billed bulk with full CSV control
EZQR's bulk generator handles the three workflows that matter for real projects: CSV import with arbitrary column order (you map "URL" and "label" columns at upload — no fixed schema), ZIP-of-PNGs export with filenames derived from the label column, and SVG export for print shops on the Pro and Max tiers.
Free tier covers manual one-at-a-time generation (unlimited static, 3 dynamic). The Lite plan at $5/mo (monthly billing) unlocks CSV bulk import for up to 100 static codes per batch with PNG export. Pro at $10/mo lifts that to 1,000 codes per batch with SVG + PNG. Max at $20/mo handles 5,000 static or 1,000 dynamic per batch and adds API access for programmatic bulk generation.
What works: CSV mapping is genuinely flexible — your data column order does not need to match the tool's expected schema. Output ZIP filenames are derived from your label column, so the print shop receives customer-001.png not qr_kFh2j.png. Monthly billing throughout — no annual upfront. Dynamic bulk codes survive cancellation: even after you downgrade or cancel, the printed codes keep redirecting.
What doesn't: no built-in CSV template downloader (you build the CSV yourself from your data). 5,000-row batches process in ~3 minutes — fast, but if you need 10,000 in one upload you split into two batches.
Best for: agencies, event organizers, packaging teams, and anyone running 100–5,000 unique codes per project on monthly billing without per-code fees. Detailed in our QR code packaging guide.
2. QR Tiger Premium — Best for API-driven enterprise bulk
QR Tiger Premium at $37/mo annual is the enterprise default for bulk QR with API integration. Their bulk generator handles up to 10,000 codes in a single upload — the highest single-batch ceiling in our test.
What works: API depth is the differentiator. If you need to generate codes programmatically (5,000 unique vCards from your CRM nightly, 50,000 product codes from inventory weekly), QR Tiger's REST API is mature and well-documented. SOC 2 compliance, audit logs, and white-label options are real for enterprise procurement.
What doesn't: $37/mo annual = $444/year upfront. At 1,000 codes per month, that's $0.037 per code — roughly 7× the EZQR Lite cost. Annual billing required on most plans. Dashboard is cluttered with upsells. Free tier is a 3-code trial, not a permanent free option. The EZQR vs QR Tiger breakdown covers the price-vs-API trade-off.
Best for: developers integrating QR generation into their own product, and enterprises requiring SOC 2 compliance with bulk volume above 1,000/month.
3. Uniqode (Beaconstac) — Best for team-managed bulk workflows
Uniqode Pro at $49/mo annual ($588/year) targets mid-market and enterprise teams that need bulk generation alongside team permissions, asset libraries, and audit logs. Maximum batch is 5,000 dynamic codes per upload.
What works: team workspaces, role-based access, shared brand asset library, and proper audit trails make Uniqode the right answer for marketing organizations of 10+ where a junior marketer should not be able to print codes without approval. Bulk generation respects team-level templates so every code in a batch uses the approved brand mark and color.
What doesn't: at $49/mo annual ($0.049 per code at 1,000), Pro is roughly 10× the EZQR Lite cost. Annual billing required. Following the Beaconstac → Uniqode rebrand, several long-time customers reported price increases without grandfathering. The EZQR vs Uniqode comparison details the team-features-vs-cost trade-off.
Best for: marketing teams of 10+ running regular bulk campaigns where team permissions outweigh per-code cost.
4. Beaconstac (legacy URL) — Same product, lingering search demand
Worth flagging: many bulk QR searches still land on the old Beaconstac brand. The product is now Uniqode (covered above). The Beaconstac URLs still resolve and redirect; pricing and feature set are identical. We mention this only because procurement workflows sometimes have "Beaconstac" pre-approved as a vendor — the rebrand may require updating the approved-vendor list.
No separate feature comparison needed. Use the Uniqode entry above for the trade-offs.
5. QRCode Monkey — Free but no native bulk
QRCode Monkey is the leader for free custom static codes but does not support bulk CSV import. The bulk workflow on QRCode Monkey is manual: paste URL, customize, download, repeat. Realistic throughput is ~2 codes per minute including customization — so a 100-code job is ~50 minutes of human time.
What works: zero cost, no signup, no per-code fee, full custom design on each code. SVG export is real vector output.
What doesn't: there is no CSV import. There is no API. Bulk via QRCode Monkey is feasible only for batches under ~50 codes where human time is cheaper than a $5/mo subscription. The EZQR vs QRCode Monkey comparison covers the static-vs-dynamic and bulk gaps.
Best for: one-off projects under 30 codes where you have time and want zero subscription cost.
6. QR Code Generator (Bitly) — Bulk capped at 500 per upload
QR Code Generator by Bitly (formerly the standalone QRCode Generator product, now Bitly's QR product) supports bulk CSV upload but caps single uploads at 500 codes. Plus plan at $35/mo monthly billing includes the bulk feature.
What works: monthly billing (uncommon for the Bitly properties). Output is high-quality PNG. Integration with Bitly's link-shortening makes it easy to combine QR with vanity short URLs.
What doesn't: 500-code cap per upload is restrictive — a 2,000-code event needs 4 separate uploads. At $35/mo with that cap, effective per-code cost at 1,000 codes per month is $0.07 — among the highest in the test. No SVG export on the standard plan. The EZQR vs Bitly comparison covers the link-shortening crossover.
Best for: existing Bitly customers who want QR codes attached to their tracked links and don't mind the 500-code-per-batch cap.
7. Canva — Manual loop, not real bulk
Canva does not have a native bulk QR generator. The closest workflow is using Canva's "Bulk Create" Magic feature with a CSV — but it generates separate design files, not raw QR codes. Each design holds one QR placement. Useful for "100 business cards each with a unique QR" but inefficient for "100 raw QR codes for engineering use."
What works: if your bulk output is finished design assets (business cards, name badges, event tickets), Canva's Bulk Create can be the right tool because it produces print-ready files in one pass.
What doesn't: this is not a QR-first workflow. You're designing in Canva and the QR is a component. Customization depth on the QR itself is shallow. Per-design pricing model means a 1,000-design bulk run hits Canva Pro's monthly design quota fast. The EZQR vs Canva comparison covers the design-tool-vs-QR-tool difference.
Best for: teams already producing print-finished assets in Canva who want QR codes inline with the design workflow.
CSV column mapping: what the tools require
The single biggest time sink in bulk QR is reformatting your CSV to match the tool's expected schema. Three patterns to know.
Flexible mapping (best): EZQR, QR Tiger Premium, and Uniqode let you upload any CSV and map columns at upload time — the tool reads your headers and asks "which column is the URL?" and "which column is the filename label?" You upload your data as-is.
Fixed schema (common): Many smaller bulk generators require an exact column order — URL in column A, label in column B, type in column C — and reject files that don't match. You spend 20 minutes restructuring your CSV before every upload.
No mapping (Canva): Canva's Bulk Create requires you to "connect" each CSV column to a placeholder in the design. Powerful but slow to set up the first time.
For any recurring bulk workflow, choose a tool with flexible mapping. The 20-minute reformat per job times 10 jobs per month is 3+ hours of recoverable time.
Static vs dynamic bulk: which one do you actually need?
Bulk QR generation splits into two workflows with very different infrastructure requirements.
Static bulk encodes each row's URL directly into the visual pattern of its code. Once printed, the URL cannot change. This is the right workflow for: product packaging (each SKU has a unique product page URL), event lanyards (each attendee has a unique check-in URL), printed business cards (each card encodes the cardholder's vCard data). Static bulk costs less per code (no ongoing redirect server costs) and never depends on the generator staying alive.
Dynamic bulk generates a unique short redirect URL for each row, then forwards each scan to the real destination. The destination URL can be changed after printing. This is the right workflow for: marketing campaigns where landing pages may change mid-flight, anything requiring scan analytics per code, A/B testing scan destinations. Dynamic bulk depends on the generator's redirect infrastructure — if the generator dies or you cancel and the vendor deletes your codes, every printed code is dead.
The dynamic vs static deep dive covers the engineering trade-offs in detail. For most bulk product-labeling and event workflows, static is the correct choice. For marketing campaigns and trackable codes, dynamic is required — and the cancellation policy becomes the most important vendor question.
When to choose bulk static vs bulk dynamic for real campaigns
The static-vs-dynamic decision drives bulk tool choice more than any other factor, and getting it wrong costs either money (over-buying dynamic when static suffices) or reprints (under-buying static when dynamic was needed). Three production scenarios to anchor the decision.
Scenario 1: 2,000 product labels, URL is final. A consumer goods brand prints 2,000 unique product variant labels, each pointing to its variant page on the company's website. The URLs are part of a stable product catalog with no plans to restructure. Static bulk is the right call: cheaper, no ongoing redirect costs, no vendor dependency. EZQR Lite at $5/mo handles the 2,000-row CSV in one batch.
Scenario 2: 1,500 event lanyards, need scan analytics. A conference prints 1,500 attendee lanyards with unique QR codes leading to each attendee's personalized check-in page. The destination URLs are stable but the conference wants scan data (who scanned, when, from where) to measure session engagement. Dynamic bulk is required because analytics are required. EZQR Max at $20/mo handles 1,000+ dynamic codes per batch with full per-code scan tracking.
Scenario 3: 5,000 packaging codes for a campaign that may evolve. A QSR chain prints 5,000 unique codes across packaging variants for a campaign that may pivot mid-flight. Marketing wants the ability to repoint codes from the original campaign page to a successor page without reprinting. Dynamic bulk is mandatory. The vendor's cancellation policy becomes the most important variable — if codes deactivate on cancel, the printed packaging becomes dead inventory.
For any production bulk run, write down the answer to two questions before picking a tool: "Will the destination URL definitely never change?" and "Do I need scan analytics?" Two yeses → static (cheapest). Any no → dynamic (subscription required, cancellation policy matters).
Bulk generation throughput: real numbers from the test
Marketing pages quote bulk capacity in misleading round numbers. Here are the measured throughputs from our 1,000-row CSV test in May 2026, end-to-end including upload, processing, and download.
EZQR Pro (1,000 static codes with logo): 12 seconds to upload, 31 seconds to process, 8 seconds to download the ZIP. Total: 51 seconds. Output ZIP was 14 MB containing 1,000 PNGs (1024×1024) and 1,000 SVGs. All filenames matched the label column from the source CSV.
QR Tiger Premium (1,000 dynamic codes): 18 seconds to upload, 71 seconds to process, 11 seconds to download. Total: 100 seconds. Output ZIP was 18 MB containing PNGs plus a manifest CSV mapping each filename to its dynamic short URL.
Uniqode Pro (1,000 dynamic codes): 14 seconds to upload, 118 seconds to process, 9 seconds to download. Total: 141 seconds. Output ZIP was 16 MB containing PNGs only — no manifest, which made reconciliation harder.
Bitly QR Generator (1,000 dynamic codes in two batches of 500): Batch 1 was 78 seconds total; batch 2 was 81 seconds. Combined: 159 seconds plus the manual overhead of splitting the CSV and merging the output ZIPs. Effective throughput drops further as you scale — a 5,000-code job becomes 10 batches.
For any bulk workflow above 500 codes per project, the single-batch ceiling matters more than the marketing page's "10,000+ supported" claim. Test with your actual row count on the free tier or during the first paid month before committing.
Common bulk QR pitfalls (the time-wasters)
After running the test files through 7 generators plus a dozen smaller competitors, three pitfalls show up across nearly every tool.
Silent row skipping. Many bulk generators silently drop CSV rows with malformed URLs (missing protocol, extra whitespace, special characters) without telling you which rows failed. You discover the gap when you try to print code #347 and it's missing from the ZIP. Always reconcile the row count in your CSV against the file count in the output ZIP.
Filename collisions. If your label column has duplicates ("Customer 1" twice), the generator may overwrite the first file with the second. Most professional tools append a counter suffix; some don't. Spot-check a few duplicates before printing.
Hidden per-batch fees. A "$10/mo" plan with bulk feature may charge an additional per-batch fee or per-code-above-quota fee. Read the pricing terms before running a 5,000-code batch. The QR code generator hidden costs post covers the patterns we keep seeing.
The bottom line
For most agencies, packaging teams, and event organizers running 100–5,000 unique codes per project on monthly billing: EZQR Lite at $5/mo (or Pro at $10/mo for SVG) is the right pick. Flexible CSV mapping, no per-code fees, monthly billing, codes survive cancellation.
For enterprises with bulk volume above 1,000/month and API integration needs: QR Tiger Premium at $37/mo annual for API depth, or Uniqode Pro at $49/mo annual for team permissions.
For one-off projects under 50 codes: QRCode Monkey free, manual.
Skip any bulk generator that: charges per-code, caps single uploads below 1,000 without telling you upfront, requires fixed CSV column order, or deletes codes when you cancel. The annual savings from monthly billing alone often exceed a year of competitor subscription cost.