Fixing CSV upload problems

Last updated: July 2026 · About 7 minutes

The CSV upload tells you when something is wrong, but the messages are short. Here is what each one actually means and how to fix it — followed by the more dangerous category: problems that produce no error at all and quietly generate the wrong codes.

"Please upload a file with a .csv extension"

The file does not end in .csv. Almost always it is still an .xlsx, .xls or .numbers file — spreadsheet apps do not convert on rename.

Use File → Save As or Export and pick CSV explicitly. In Google Sheets it is File → Download → Comma-separated values.

If it genuinely is comma-separated text with a different extension — a .txt export — renaming it to .csv is fine.

"No data found in CSV file"

The file parsed but produced no usable rows. Usually one of:

Open the file in a plain text editor rather than a spreadsheet. The first line should be your column names and the second should be real data. CSV formatting covers what a clean file looks like.

"Error parsing CSV: ..."

The parser hit something it could not resolve, and the rest of the message comes from the parser itself. The usual causes are structural:

Re-exporting cleanly from the spreadsheet fixes nearly all of these.

"Please choose which column contains the URLs"

No URL column is selected. The tool guesses on upload — it looks for a column called exactly url or link, and falls back to the first column — so this normally resolves itself.

If it did not, the dropdown is showing something unexpected. Name the column url in your spreadsheet and the guess will land next time.

"No URLs found in the ... column"

The chosen column exists but every cell in it is empty. Two things cause this far more than any other:

The silent problems

These generate a full batch with no warning at all. They are worth checking before a large run, because the codes look perfectly fine and point at the wrong place.

URLs missing their protocol

example.com/page encodes as plain text. Many scanners will not offer to open it, so the code appears broken to a user while scanning correctly. Every URL needs https://.

Check with a formula before exporting: =IF(LEFT(A2,4)="http","ok","MISSING") and filter for MISSING.

URLs split across columns

A URL containing a comma, exported without quoting, splits into two columns. The URL column then holds a truncated fragment and everything after the comma has shifted right. Codes generate happily and point nowhere useful.

Spreadsheet exports normally quote these correctly. Hand-assembled files often do not. If your URLs contain commas, confirm they are quoted in the raw file, or percent-encode the comma as %2C.

Trailing whitespace

A trailing space survives into the encoded value. Some servers tolerate it; some return a 404. Run TRIM() over the column before exporting.

Smart quotes and en-dashes

URLs pasted through a word processor pick up curly quotes and en-dashes substituted for hyphens. They look almost identical and are different characters entirely. Build URLs in the spreadsheet, not in a document.

Filenames colliding

If the column you name files after has duplicates, the second gets _2, the third _3, and so on. Nothing is overwritten — but the numbering is by order of appearance, so lavender.png and lavender_2.png are not self-explanatory later. Pick a column that is genuinely unique, like a SKU or ID. See naming files from a column.

The check that catches all of this

Before generating hundreds of codes, generate three. Delete all but the first three rows, run it, and scan each code from the ZIP.

Thirty seconds of work confirms:

Then run the full file. This catches every silent failure above, which is the entire category that error messages cannot help you with.

If the count in the status message does not match the rows in your spreadsheet, stop and find out why before generating. A mismatch always means something was dropped or misread.

Open the generator