1. Your product CSV
The file from WooCommerce's Export, a supplier feed, or your own spreadsheet, saved as CSV.
Choose a file or paste the text, then click Check file.
Result
Products
| Line | SKU or name | Name | Variations | Images |
|---|
Safe fixes
The model, and what it leaves out
- Type decides the row's job: simple, variable, variation, grouped or external. A variation row finds its product through Parent (the variable product's SKU, or
id:NNfor one already in the shop), and the parent row must come first. - Attributes: the variable product lists every value (
Natural, Black) in Attribute 1 value(s); each variation names exactly one of them. - SKUs are unique across the shop, so a repeat inside the file is an error, and so are SKUs Excel rewrote to scientific notation.
- Plain numbers: Regular price, Sale price, stock and the weight and size columns are digits and a decimal point, with no currency symbol, unit or thousands separator. Sale dates are YYYY-MM-DD.
- Flags such as Published, In stock? and Is featured? are 1 or 0; Published may also be -1 (private).
- GTIN codes of 8, 12, 13 or 14 digits are checked, because marketplaces and Google Merchant Center reject a wrong check digit.
- Safe fixes change only delimiter, header capitals, stray spaces, lowercase and 1/0 flags, price and weight formatting. It never edits a name, description, SKU, barcode, stock, category or image address.
- Not checked: that WooCommerce will accept the file today, whether categories and global attributes already exist, plugin meta columns, that image URLs are reachable, and anything WooCommerce changes in its importer. Import two or three products first.
Common questions
Why does my WooCommerce product CSV import fail or create the wrong products?
The usual causes are a variation whose Parent SKU matches no row, a parent row that comes after its variations, a repeated SKU, prices with a currency symbol or a decimal comma, a variation value that is not in the parent's attribute list, an unquoted comma in Categories or Images that shifts every later cell, and an Excel save that turned SKUs or barcodes into scientific notation. This tool tests each of them and names the line.
How do I check a WooCommerce product CSV before importing it?
Paste the file or drop it onto this page. It reads the header against the importer's product template, links each variation to its parent, and lists every problem with its line number, grouped as errors, warnings and notes. Nothing is uploaded.
Why does WooCommerce say Invalid or duplicated SKU?
SKUs must be unique across the whole shop. A SKU repeated inside the file, or one Excel rewrote into scientific notation so two products collapse to the same value, is rejected on the second row. This tool lists every repeat with both line numbers.
Why do my variations import with no parent or as separate products?
A variation finds its parent through the Parent column, which holds the variable product's SKU or id:NN. If the SKU has a stray space, a different capital, or the parent row sits below the variation, the link fails. The tool checks that the parent exists, comes first, has Type variable and lists the variation's attribute value.
Why is my WooCommerce CSV semicolon-separated?
Excel in many European and Latin American locales saves CSV with semicolons because the comma is the decimal separator. The importer defaults to commas. This tool detects the delimiter and, with Apply safe fixes, rewrites the file with commas.
What does Apply safe fixes change?
Only things with one reasonable reading: the delimiter, header capitalisation, stray spaces around SKUs, Parent, IDs and image lists, lowercase for Type, visibility, tax status and backorders, yes/no or true/false to 1 or 0 in the flag columns, decimal commas in weights, and prices like $1,299.00 to 1299.00. It never edits a name, description, SKU, barcode, stock, category or image address.
Is it safe to put my product catalogue into a web page?
The page runs in your browser, the file is read locally and nothing is uploaded; a test in the code asserts there are no network calls. Your own policies still decide what you may open in a browser.
What does this not check?
Whether WooCommerce will accept the file today, whether categories or global attributes already exist, plugin-specific meta columns, whether image URLs are reachable, and anything WooCommerce changes in its importer. A clean result is not a promise of success: import a few products first.