WooCommerce Product CSV Validator

Find out why your WooCommerce product import isn't working: broken parent links, duplicate SKUs, attribute mismatches, bad prices and encoding problems, row by row.

Describe the result you need. AI will set up the tool and ask for any missing details.

Configure with AI

Enter to submit · Shift + Enter for a new line

Sent to AI. Leave out passwords and private customer data.

Drop your WooCommerce product CSV here or browse files

CSV up to 25 MB. It's read in your browser and never uploaded.

WooCommerce → Settings → General → Currency options.

What the validator checks

The checks follow WooCommerce's own importer code, so each one matches a way an import can fail or come out wrong.

CheckWhy it matters
Encoding, BOM and delimiterThe importer expects UTF-8 and commas. Non-UTF-8 files garble accented characters; semicolon files need the CSV Delimiter advanced option.
Duplicate SKUs and GTINsWooCommerce rejects a SKU or GTIN that's already in use, so the second row fails or overwrites the first.
Parent linksEach variation needs a Parent that points to a variable product, by SKU or id:123.
Attribute valuesA variation's value must be one of the parent's values. For product-level attributes it must match exactly, capitals included.
PricesCurrency symbols are stripped, and 19,99 becomes 1999 in a store that uses a period for decimals. A sale price must be below the regular price.
Allowed valuesType, Published, In stock?, Backorders allowed?, Visibility in catalog and Tax status only accept certain values.
Images and categoriesCloud-storage share links don't import. Category levels use >, not /.

The sample file

Rows
11 (5 products, 6 variations)
Errors
Duplicate SKU, sale price above regular, “white” vs “White”, “Grey” not on the parent, 19,99
Warnings
Parent HOODIE not in the file, $24.00, a Google Drive image link

5 errors and 3 warnings. The fixed file corrects the price formats and the capital W. You still have to fix the duplicate SKU, the sale price and the missing Grey value yourself.

How WooCommerce 11.2 matches rows when updating

With Update existing products ticked, WooCommerce 11.2 looks for the product by ID first, then SKU, then GTIN (only when the row has no ID and no SKU). A row whose identifier matches nothing is skipped instead of created. A GTIN that matches a product of a different type is refused, so an update can't quietly change a product's type.

  • Choose Update existing products above to apply these rules. Rows with no ID, SKU or GTIN are flagged: they're created as new products even in update mode.
  • WooCommerce 11.1 added creating new variations during an update. The parent row has to come before its variations, so the fixed file moves parents up.
  • WooCommerce 11.2 was in beta on the check date, with release week set for 6 October 2026.

Fixing what's left

  1. 01

    Download the fixed CSV

    It changes only what's safe: currency symbols, decimal commas, yes/no values, attribute capitals, parent-before-variation order, and commas as the delimiter.

  2. 02

    Fix the errors in your spreadsheet

    Duplicate SKUs, wrong parents and missing attribute values need a human decision. Each issue lists the row number.

  3. 03

    Check again, then import

    Drop the file back in until errors reach zero, then import at Products → All Products → Import.

Starting from scratch? The product CSV template generator gives you correct headers to begin with.

Questions people ask

Why does WooCommerce skip some products?

The usual causes are a SKU or ID that already exists without Update existing products ticked, or, when it is ticked, an ID or SKU that matches nothing. The importer's skipped-rows report lists the reason for each.

Why are my variations missing after import?

Usually the Parent value doesn't match the parent's SKU, the parent isn't Type variable, or the variation's attribute values aren't in the parent's list. The validator checks all three.

Is my file uploaded anywhere?

No. The file is read and checked in your browser, and nothing is sent to a server.

Why do accented characters look wrong after import?

The file wasn't saved as UTF-8. In Excel, use Save As → CSV UTF-8. The validator flags broken characters it finds.

Does it check against my store's existing products?

No, it only sees the file. A Parent SKU that isn't in the file gets a warning, because it has to exist in your store already.

Want this builtinto your store?

I'm Emmanuel, a Shopify and WooCommerce developer. If this tool pointed at something you'd rather have fixed for you (a faster store, cleaner product data, a migration, a custom feature), send me a note.

Emmanuel Asika

Emmanuel Asika

Shopify & WooCommerce developer, Dublin

I build and fix online stores: new builds, migrations, speed, SEO and the custom bits apps can't do.

hello@emmanuelasika.com