Skip to content

WooCommerce Product CSV Import Validator

Check your file before a WooCommerce product CSV import. See every row and column the importer will skip or misread, with the fix for each one.

Up to 200 KB

The file is read in your browser and never saved.

  • No sign-up or email
  • Evidence behind every result
  • Rules from the official docs
WooCommerce product CSV validator report with a readiness score, row health and a list of issues by row and column
How it works

How to check a WooCommerce product CSV

  1. Paste or choose your file

    Use the CSV you plan to import, up to 200 KB. Choosing a file loads its text into the box. That text is what we check.

  2. Read the report

    Red rows fail or import wrong. Amber rows import but need a look. Row numbers match your spreadsheet and the header is row 1.

  3. Fix and import

    Open "How to fix" on each issue and check the file again. Import it from Products > All Products > Import.

What it checks

What the WooCommerce CSV validator catches

Each row is read with the same column names and value rules as the WooCommerce product importer.

Columns WooCommerce ignores

The importer sets any header it cannot match to "Do not import". We list each one with the name WooCommerce expects.

Broken variations

We flag variations with no parent and attributes the parent never defines. A variation with several values for one attribute gets flagged too.

Prices WooCommerce misreads

We flag currency signs, spaces and thousands separators in a price cell. We also flag a sale price that is not lower than the regular price.

Duplicate SKUs and IDs

WooCommerce rejects a second row with the same SKU. A repeated ID makes the second row overwrite the first. Each issue names both rows.

Yes and no values

The stock, published and visibility columns take only fixed values. Even the word "no" in the stock column means in stock.

Image URLs and spreadsheet damage

We flag image entries that are not full URLs and sale dates in the wrong format. We also catch rows whose values slid into the wrong column and SKUs that Excel turned into 1.2E+11.

Why do WooCommerce product CSV imports fail?

A WooCommerce product CSV import fails when a header has the wrong name or a cell holds a value the importer cannot read. Unknown headers are set to "Do not import". Many bad values import with no error at all and the damage shows up later in the store.

That is why the problems show up after the import. Products sit in the wrong status, variations show "Any" and sale prices never start or never end.

A check before the upload takes a minute. Cleaning up a few hundred live products takes much longer.

What column names does the WooCommerce importer expect?

The WooCommerce importer matches each column header by its exact name, though upper or lower case does not matter. The safest template is an export from your own store under Products > All Products > Export. It writes every column with the name the importer expects, including the attribute and meta columns your products use.

Our guide on how to export WooCommerce products to CSV shows each export setting.

ColumnWhat to put in it
Typesimple, variable, variation, grouped or external. Add virtual or downloadable after a comma.
SKUA unique code for each product and variation.
ParentFor a variation: the parent SKU, or id:123 for its ID.
Regular price / Sale pricePlain numbers such as 19.99.
In stock?1 for in stock and 0 for out of stock. The word backorder also works.
Published1 for published and -1 for draft. A 0 makes the product private.
CategoriesParent > Child for nesting. Commas separate one category from the next.
ImagesFull image URLs separated by commas. The first one becomes the main image.
Attribute 1 name / value(s)The attribute name, such as Color. The parent lists every value and each variation gets one.
Meta: your_keyAny custom field. WooCommerce saves the value as plain text on the product.

What does WooCommerce do with values it does not expect?

WooCommerce converts most unexpected values into something it can save instead of rejecting the row. The table below comes from the importer source code in WooCommerce 11.2. Several common spreadsheet habits change a live product without a single warning on the import screen.

You typeWooCommerce saves
"no" in In stock?In stock. Only 0 means out of stock.
"yes" in PublishedA private product. Text counts as 0.
"yes" in Backorders allowed?Backorders off. Only 1 or notify turns them on.
"$25" as a price25. The sign is stripped.
A decimal comma in a priceA price written as 19,99 saves as 1999 because the importer drops the comma in a store that uses a dot.
"28/11/2026" as a sale dateNo date. Only YYYY-MM-DD is read.

The validator flags prices with signs or separators and every non-standard yes or no value. It cannot see your store settings.

Check the decimal separator under WooCommerce > Settings > General before you import prices written with a comma.

How do you import products with variations from a CSV?

Put the variable product row first with Type set to variable, an SKU and every attribute value it offers. Each variation goes on its own row below it with Type set to variation and Parent set to the parent SKU. Price and stock belong on the variation rows.

Give each variation the same attribute name as the parent with exactly one value. A list such as "Blue, Red, Green" belongs only on the parent.

When a variation uses an attribute the parent does not list, WooCommerce saves it as "Any Color". The validator checks every variation against its parent row. Our guide to creating a WooCommerce variable product shows the same setup in the editor.

How do you stop Excel from breaking a WooCommerce CSV?

Excel changes a CSV the moment it opens it. Long SKUs turn into 1.2E+11, leading zeros disappear and dates switch to your local format. A save in any format other than UTF-8 can also garble the accents and currency signs in your product text.

  • Save as UTF-8: Use File > Save As > "CSV UTF-8 (Comma delimited)". The importer also has a character encoding option under "Show advanced options".
  • Import as text: Use Data > From Text/CSV and set the SKU and date columns to Text before you edit.
  • Prefer Google Sheets or LibreOffice: The WooCommerce docs recommend both. Save the file as a UTF-8 CSV whichever one you use.
  • Check after every save: Paste the file here again before you upload it.

How do you import a large product catalog into WooCommerce?

Split a large catalog into smaller files and import them one after another. The WooCommerce docs name a file too large for one server request as a cause of failed imports. Image URLs add time too, because WooCommerce downloads each one into the Media Library.

Back up the store and run a small test import on a staging site first, as the docs advise. Keep parent products and their variations in the same file. Tick "Update existing products" when a later file changes products that already exist.

Supplier feeds that change every day need a different setup. A scheduled importer with your own column mapping keeps stock and prices in sync.

Sources

More free tools

More free tools for WordPress sites

FAQ

WooCommerce CSV import questions

Short answers on product CSV files and the WooCommerce importer.

Ask us a question

Yes. There is no account, no email and no plugin to install. Paste the CSV or choose the file and the report shows up in a few seconds.

Go to Products > All Products and click Import. Choose your file and check that each column maps to the right field on the next screen. Run the import once this validator shows no red rows.

Two rows in the file share one SKU, or the SKU already belongs to another product in your store. Give each product and variation its own SKU. To change a product that exists, tick "Update existing products" on the first screen.

UTF-8 text with a header row first and commas between columns. Cells that contain a comma or a line break go in double quotes. A semicolon file works if you set the CSV delimiter under "Show advanced options".

Put full public image URLs in the Images column and WooCommerce downloads each one into your Media Library. A bare file name works only when that file is already in the Media Library. This tool flags bare file names so you can check them.

The Published column holds something other than 1. WooCommerce saves 0 and any text such as "yes" as private, and -1 as draft. Set Published to 1 for every product you want live.

Your file is not saved. The text goes to our server, gets checked in memory and is never written to a database.

The report is cached for 6 hours so the share link works. It quotes up to 80 characters of each flagged cell.

Up to 200 KB per check, which is a few hundred product rows. Split a bigger file into parts and check each one before you import it.

Moving a big catalog into WooCommerce?

This validator gets one WooCommerce product CSV import right. For supplier feeds and platform moves, we build importers that keep variations with their parents and update stock on a schedule.

Support within hours A real person replies
14-day money back Fair terms
Always compatible Latest WP and Woo
Custom builds Made for your store

Why store owners pick us

What comes with every plugin you buy.

  • 26 premium WooCommerce plugins
  • 500+ five-star reviews
  • Served in 158+ countries
  • Elite Author on Envato
  • HPOS and latest Woo ready
  • Support that replies in hours
Pedro Lima, DevDiggers customer Kareem Al Samman, DevDiggers customer Valentina Dancheva, DevDiggers customer Diego Lopes, DevDiggers customer 5 star rating from 500+ reviews

Trusted worldwide

Store owners in 158+ countries run on DevDiggers.

Alan, DevDiggers customer Shiyanthan M, DevDiggers customer Pawel Pytasz, DevDiggers customer Marius, DevDiggers customer

Proven on Envato

Elite Author with $125,000+ in sales.