Features · Bulk CSV import

Bulk QR code generator — create a print run from a CSV

A print run is not twenty codes made in a form — it's a spreadsheet. The importer takes your CSV and creates the whole batch: destination, name, folder and subfolder, an optional passcode, and campaign tags, all read per row. Folders that don't exist yet are created on the way.

It's built for the failure cases, because bulk operations are made of them: every row gets an individual receipt — created, or failed with the reason and line number — the plan limit is checked for the whole batch up front, and a file too big for one gulp is drained in the background at hundreds of rows a minute, tab open or closed.

The columns do real work

type, title, link, qrPassword, folder, subFolder, and the five utm_* fields — matched by header name, order-independent. A passcode in the sheet ships hashed; tags in the sheet attribute every future scan. The sample file demonstrates every column, so nothing is discoverable only by reading docs.

Receipts, not vibes

Each line lands as created (with its slug) or failed (with why: a malformed URL, a destination flagged by Safe Browsing, the plan cap). You fix the six bad rows and re-import six rows — not the file.

Sized for onboarding, not demos

Default imports accept 100 rows per file; a real print run is arranged per workspace up to 2,500 — the full Business allowance in one file. Large files finish in minutes in the background, and progress is visible row by row.

PlansCSV import is on every plan, within the plan's code allowance. Print-run limits (up to 2,500 rows per file) are raised per workspace on request. Compare plans →

Questions

What happens if the import fails halfway?

Nothing is lost and nothing duplicates: rows are processed exactly once each, work resumes automatically, and the receipt shows precisely which rows are done, pending or failed. Closing the tab doesn't stop it.

Can I re-import to update existing codes?

Import creates codes; it deliberately doesn't overwrite them — a spreadsheet silently rewriting live destinations is a footgun we chose not to sell. Repointing existing codes is done in the dashboard, where each change is recorded.

Related

Print it once. Change it whenever.

Unlimited static codes on every plan. Dynamic codes you can repoint after printing, on your own domain.