What your CSV actually needs to look like
Most bulk QR code failures aren't QR problems — they're spreadsheet-format problems. A file saved as the wrong type, a missing header row, a comma inside a field that wasn't quoted. This page covers exactly what a CSV needs to work correctly, then hands you to the actual generator.
The format, precisely
- Comma-separated, not semicolon or tab. Some regional Excel installs default to semicolons — check by opening the file in a plain text editor if you're not sure.
- A header row is required. Row one becomes your column names; every row after it becomes one QR code.
- Quote fields that contain a comma.
"123 Main St, Suite 4"— the quotes keep that comma from being read as a new column. Any spreadsheet program does this for you automatically on save. - Use a real CSV export. Save or export comma-separated values from your spreadsheet; renaming the extension does not convert a workbook. For native .xlsx files, use the Excel import workflow.
- Column order doesn't matter. You map each column to its purpose by name after uploading, whatever order they're in.
From spreadsheet to QR codes
Export as CSV
From Excel, Google Sheets, Shopify, Airtable, or wherever your data already lives.
Upload it
Read entirely in your browser tab — nothing is sent to a server.
Map your columns
Which one is the QR content, filename, caption — auto-guessed first, adjustable if it's wrong.
Generate
Individually named SVG or PNG files, packed into one ZIP.
What happens with messy real-world data
Real spreadsheets have gaps. A row with no value in the column you mapped as the QR content is skipped automatically — it won't produce a broken or blank code, and it won't stop the rest of the batch. If two rows would end up with the same filename (two products both named "blue-shirt", say), a number is appended to whichever one arrives second, so nothing in the output ZIP silently overwrites another file.
Optional columns — caption, price, category, or the vCard/WiFi-specific fields if you're generating those types in bulk — can simply be left unmapped if your sheet doesn't have them. Nothing about the format is fixed beyond the header row and comma delimiter above; the mapping step is what makes an arbitrary spreadsheet usable.
How far the free tier goes, and what's next
- Unlimited single codes
- Bulk batches up to 20 codes
- One batch, up to 5,000 codes
- Custom filenames, ZIP export
- Unlimited batches, forever
- Logo on every code
- Printable label sheets
One-time payment, never a subscription. Compare all plans →
Questions
Does the delimiter have to be a comma?
Yes — the parser reads comma-separated values. If your file uses semicolons (common in some regional Excel exports) or tabs, re-save it with commas as the delimiter before uploading, or open it in Google Sheets and export a fresh CSV from there.
What if a value itself contains a comma, like "123 Main St, Suite 4"?
Wrap that field in double quotes in the CSV — "123 Main St, Suite 4" — and the comma inside it won't be treated as a column break. Any normal spreadsheet program does this automatically when you save as CSV; it only becomes a problem with a hand-edited file.
Does the first row have to be headers?
Yes — row one is always read as column names, not data. Every row after it is treated as one QR code. A file with no header row will have its first real row silently used as headers and skipped as data, so always include one.
My export is .xlsx, not .csv — does that work?
Yes. The workspace accepts .xlsx directly and lets you select a worksheet. You can also export as CSV; renaming the file extension does not convert its contents.
What happens to a row that's missing a value?
If the column you mapped as the QR content is blank for that row, that row is skipped automatically rather than producing a broken or empty code. Every other mapped column is optional and simply omitted if blank.
Can two rows produce the same filename?
If your filename pattern would collide — two rows both mapping to "blue-shirt", say — a number is appended automatically (blue-shirt-1, blue-shirt-2) so nothing silently overwrites another file in the ZIP.
Does column order matter?
No — you map each column to its purpose (QR content, filename, caption, etc.) by name after uploading, regardless of what order they're in or what they're called in your original file.
How large a CSV can this actually handle?
Import files up to 20 MB. The free plan exports up to 20 codes per batch, a $7 Batch Pass covers one file up to 5,000, and $39 lifetime Pro supports unlimited batches. Practical job size depends on browser memory.
