Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

WooCommerce Product CSV Builder & Checker

A simple product sheet in, WooCommerce import rows out — or a CSV checked and fixed.

Free preview, no sign-upIncluded in your pass Premium tool Premium pass: ₹799 / $19.99 for 30 days On this device; its files download once
+2 +1 more details No upload Business

Free preview: the summary and the problem counts for your whole file, with the first rows of the new CSV, of its problems and of the changes (up to 10 each). Locked until you unlock it: download.

Premium pass ₹799 for 30 days or ₹249 for 1 week, one‑time. Premium pass $19.99 for 30 days or $7.99 for 1 week, one‑time. How to unlock

Try before you buy.

  • Free preview: the summary and the problem counts for your whole file, with the first rows of the new CSV, of its problems and of the changes (up to 10 each).
  • Locked until you unlock it: download.
  • Unlock: Premium pass, ₹799 for 30 days or ₹249 for 1 week, a one-time payment that never renews. Unlock: Premium pass, $19.99 for 30 days or $7.99 for 1 week, a one-time payment that never renews.

Ways to unlock shows how to get the full result.

See passes (opens in a new tab)

Printing this result is locked in the free preview.

1. Your sheet or WooCommerce CSV

2. Your store

WooCommerce → Settings → Products (units) and Settings → General (the decimal separator). Column headings such as “Weight (kg)” map only when the unit is the store’s.

4. Files

Next steps Done. What next?

Start over

A Premium pass unlocks the full result. See passes

All business tools

About the WooCommerce Product CSV Builder & Checker

A product with 3 sizes and 2 colours is 7 rows in a WooCommerce import file: a variable product that lists every value of its attributes, then a variation for each combination that names its parent’s SKU and carries its own price, stock and attribute values. Here you keep a simple sheet instead — one row per product, with Size, Colour or any option column holding a list such as “S, M, L”, or one row per variant — and the builder writes those rows for WooCommerce’s built-in Product CSV Importer: “Attribute 1 name / value(s) / visible / global” columns, categories as “Parent > Child”, comma-separated image links, 1/0 flags, SKUs for every variation, and weights converted to your store’s unit.

The checker opens a WooCommerce product CSV before you import it and lists what the importer would trip over — duplicate SKUs, variations whose parent is missing or comes after them, variation values the parent does not list (the importer skips those), sale prices above the regular price, http:// and broken image links, decimal commas, “yes” or “no” in 1/0 columns, an empty “In stock?” (out of stock when the row has no Stock number), text saved in the wrong encoding and columns the importer does not know — each with an automatic fix and a change log. Large catalogues split into files that keep each variable product with its variations. Everything runs in your browser; MySmartCoPilot is not affiliated with or endorsed by WooCommerce.

How to use it

  1. Choose your sheet or WooCommerce CSV (CSV, TSV, Excel or OpenDocument), or paste the rows. Try a simple sheet and Try a CSV with mistakes show both ways of working; the simple-sheet template downloads with or without a pass.
  2. Set your store’s weight and dimension units and its decimal separator (WooCommerce → Settings → General and Products), so the columns map and prices read as your store expects.
  3. The page tells a simple sheet (Build) from a WooCommerce CSV (Check and fix); switch if it guessed wrong. To build, check what each column is used as (an option such as Size makes variations). To check, choose the fixes (all safe ones are on) and what happens to unknown columns.
  4. If the catalogue is large, choose how to split it: a number of rows or a size per file. A variable product always stays in one file with its variations.
  5. Press Build the CSV or Check the file and look at the preview, the problems left and the change log. Without a pass the result stays a free preview with its first rows; the files unlock with a Premium pass.
  6. In WordPress, open Products → Import, choose the file, tick “Update existing products” only when you are updating products already in the store, check the column mapping and run the import.

Examples

A shirt in 3 sizes and 2 colours
Input
Linen Shirt · SKU LS · Price 34.00 · Stock 10 · Size: S, M, L · Colour: White, Sage
Result
A variable product “Linen Shirt” (SKU LS, Attribute 1 Size: S, M, L; Attribute 2 Colour: White, Sage) and 6 variations: LS-S-WHITE “Linen Shirt - S, White”, LS-S-SAGE, LS-M-WHITE… each with Parent LS, 34.00 and a stock of 10
One row per variant
Input
Two rows named “Wool Beanie”: SKU WB-RED, Colour Red, stock 6; SKU WB-NAVY, Colour Navy, stock 0
Result
A variable product WOOL-BEANIE with Colour: Red, Navy, and the two variations keeping their own SKUs; the navy one “In stock?” 0
Checking an export before importing it again
Input
A variation above its parent, Published “yes”, a price “45,00”, a variation value L the parent does not list, a sale price above the regular price
Result
Parent moved above its variations · 1 · 45.00 · L added to the parent’s values · the sale price removed — every change in the change log

Common uses

  • A shop owner listing a new range from a supplier’s price list without typing a row per variation.
  • An agency moving a client’s catalogue from a spreadsheet into WooCommerce.
  • Checking an export before re-importing it after editing prices or stock in a spreadsheet.
  • Cutting a big catalogue into files the store’s host can import one at a time.

What the builder writes

  • Simple and variable products: a product without options is a simple product. Option columns make a variable product: its row lists every value (“S, M, L”), and every combination becomes a variation, the first option outermost (S/White, S/Sage, M/White…). An option a row leaves empty means “any” for that variation, as in WooCommerce.
  • Rows of one product: rows with the same Parent SKU, or the same name, are one product, so a sheet with one row per variant works, and a row without a name continues the product above it.
  • SKUs: a row that makes one variation keeps its SKU; a row that makes several gets SKUs from the pattern (the parent SKU and the values: LS-S-WHITE). A parent without an SKU gets one from its name. Repeated SKUs get -2, -3.
  • Names: variations are named like WooCommerce’s own sample file: “Linen Shirt - S, White”.
  • Attributes: each option becomes “Attribute N name”, “value(s)”, “visible” 1 and “global” (1 when you use the store’s global attributes from Products → Attributes, else 0); other columns can be attributes that are shown but make no variations, or meta data.
  • Values: prices as plain numbers in your store’s decimal format, weights and sizes converted from the sheet’s unit (a “Weight (g)” column) to the store’s, categories as “Clothing > Shirts”, tags and images separated by commas, http:// links made https://, Published 1 (or -1 for drafts) and “In stock?” always filled in.
  • Columns: in WooCommerce’s own order, and only those with values, so an update import does not empty fields you never filled.

What the checker finds, and the fixes

  • Headings WooCommerce does not map by itself: “Price” is “Regular price”, “Image” is “Images”, “Attribute 1 values” is “Attribute 1 value(s)”, a “Weight (lbs)” column in a kg store (converted). Unknown columns are kept, removed or kept as meta data, as you choose.
  • Values the importer misreads: “yes”, “no” or “true” in 1/0 columns (the importer is sure only of 1 and 0: in “In stock?” any word but “backorder”, “no” included, imports as in stock), Published words (1 publish, 0 private, -1 draft; a word such as “yes” imports as private), Type words, prices with a decimal comma, a currency sign or thousands separators, stock that is not a whole number, dates that are not YYYY-MM-DD, “/” or “»” between category levels, “|” between attribute values (WooCommerce’s own screens use it, a CSV must use commas).
  • An empty “In stock?”: imported as out of stock when the row has no Stock number (with one, the store works the status out from the stock); filled with 1, or 0 when the stock is 0.
  • GTIN, UPC, EAN, or ISBN: the importer does not map this column by itself, so the checker reminds you to choose it on the column mapping screen.
  • Images: http:// links, spaces, missing https://, semicolons between links, the same link twice; links that cannot work (a web page, not a link) are listed and removed.
  • Products: duplicate SKUs, a parent that is not a variable product, a parent row below its variations (moved up), variation attribute names or values the parent does not list (added to the parent: otherwise the importer skips them), two variations with the same values, variations without a price, sale prices that are not below the regular price.
  • The file: encodings other than UTF-8, semicolon delimiters, Excel’s “sep=” line, text saved in the wrong encoding (“Café” for “Café”), control characters and empty or repeated rows.

A variation whose parent is not in the file is listed; the fix that adds a parent row for it is off unless you switch it on, because the parent may already be in your store.

Importing the file

WooCommerce’s Product CSV Importer and Exporter is under Products → Import. Keep each variable product’s row above its variations, as the builder and the fixer write them: when an import makes no variations, WooCommerce’s document says to check that order first. To turn a product already in your store from simple into variable, WooCommerce 11.1 and later do it in one import with Update existing products ticked when the parent row comes first; earlier versions take two imports, the parent row with Update existing products and then the variations without it. With Update existing products, rows match products by ID or SKU, and a non-blank Images cell replaces the whole gallery. The importer downloads image links when your store can reach them: links on your own Media Library or a public host work best. Check the column mapping screen once: a column you renamed or added as meta data is mapped there, and the “GTIN, UPC, EAN, or ISBN” column starts on “Do not import” until you choose its field. The columns and their values are described in the Product CSV Import Schema, and WooCommerce’s own sample products file shows a variable product with its variations.

Large catalogues

WooCommerce’s document advises splitting large files into smaller batches: how much one import can take depends on your host’s upload limit, memory and time limit. Choose a number of rows or a size per file; each file starts with the heading row, and a variable product is never cut from its variations (one bigger than the limit gets a file of its own, with a note).

Limitations

  • No store connection: the tool does not read your store or create products; you import the file yourself in WordPress.
  • Products only: orders, customers and reviews are not made here, and converting another shop system’s export into WooCommerce’s columns is not part of this tool.
  • Values only WooCommerce knows are not checked: that a category, tax class or shipping class exists, or that an image link answers.
  • Files up to 60 MB and 200,000 rows are read in this browser; a row can make up to 1,000 variations.
  • Excel files are read from their first sheet; every file written is UTF-8 CSV with commas.

Privacy

On this device; its files download once

Everything happens in your browser. What you enter or open here is not uploaded or stored by MySmartCoPilot. The spreadsheet reader and the ZIP writer load from this site the first time you need them. Your sheets and files stay on your device and are never uploaded.

Frequently asked questions

What do I get without a pass?

Without a pass, WooCommerce Product CSV Builder & Checker shows the summary and the problem counts for your whole file, with the first rows of the new CSV, of its problems and of the changes (up to 10 each). Until you unlock it, the result can’t be downloaded. A Premium or Ultimate pass, a one-time payment that never renews, unlocks the full result. The pricing page lists the passes and their prices.

Is my file uploaded?

No. The sheet is read, built or checked and the new file written in your browser. Nothing is sent to MySmartCoPilot, to WooCommerce or anyone else.

Will WooCommerce accept the file?

The rows follow WooCommerce’s import columns and pass the same checks as the checker, and the page shows that check. WooCommerce can still refuse what only it knows about, such as an image it cannot download. Import a few products first and look at them in your store.

Should the attributes be global?

Use global attributes (Products → Attributes) when the same Size or Colour is shared by many products and used in filters; tick “Use the store’s global attributes” and keep the names exactly as in your store. Otherwise the attributes are the product’s own (global 0), which needs no setup.

Why is “In stock?” always filled in?

WooCommerce reads an empty “In stock?” as out of stock for a product without a Stock number (with one, the store works the status out from the stock). The builder writes 1, or 0 for a stock of 0, so every row says it; the checker fills in empty cells the same way.

Does it change products that are already in my store?

Only when you import the file with “Update existing products” ticked: then rows with the SKU or ID of an existing product update it. The builder writes only the columns you filled, so the others keep their values.

Is this tool made by WooCommerce?

No. MySmartCoPilot is not affiliated with or endorsed by WooCommerce. WooCommerce is named only to describe the files its importer reads; the rules come from its public documentation and source code.

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.