Product Variant Generator
Turn option lists like size and colour into an import-ready CSV of every variant, with SKUs, for Shopify or WooCommerce.
Your details
Import-ready CSV
Title,URL handle,Option1 name,Option1 value,Option2 name,Option2 value,Option3 name,Option3 value,SKU,Price,Compare-at price,Inventory quantity,Status
Merino Crew Sweater,merino-crew-sweater,Size,XS,Color,Navy,,,MCS-XS-NAV,89.00,,10,draft
,merino-crew-sweater,,XS,,Oatmeal,,,MCS-XS-OAT,89.00,,10,
,merino-crew-sweater,,XS,,Forest Green,,,MCS-XS-FG,89.00,,10,
,merino-crew-sweater,,S,,Navy,,,MCS-S-NAV,89.00,,10,
,merino-crew-sweater,,S,,Oatmeal,,,MCS-S-OAT,89.00,,10,
,merino-crew-sweater,,S,,Forest Green,,,MCS-S-FG,89.00,,10,
,merino-crew-sweater,,M,,Navy,,,MCS-M-NAV,89.00,,10,
,merino-crew-sweater,,M,,Oatmeal,,,MCS-M-OAT,89.00,,10,
,merino-crew-sweater,,M,,Forest Green,,,MCS-M-FG,89.00,,10,
,merino-crew-sweater,,L,,Navy,,,MCS-L-NAV,89.00,,10,
,merino-crew-sweater,,L,,Oatmeal,,,MCS-L-OAT,89.00,,10,
,merino-crew-sweater,,L,,Forest Green,,,MCS-L-FG,89.00,,10,
,merino-crew-sweater,,XL,,Navy,,,MCS-XL-NAV,89.00,,10,
,merino-crew-sweater,,XL,,Oatmeal,,,MCS-XL-OAT,89.00,,10,
,merino-crew-sweater,,XL,,Forest Green,,,MCS-XL-FG,89.00,,10,15 variants. Import at Products → Import. The product comes in as a draft so you can add images and a description before publishing. Inventory quantity only applies to single-location stores.
How the variants are built
Every value of each option is combined with every value of the others. Five sizes and three colours make 15 variants; add two materials and it's 30. The generator builds each combination, gives it a SKU and lays it out in the exact columns your platform's importer expects.
The Shopify and WooCommerce formats
| Shopify | WooCommerce | |
|---|---|---|
| Structure | One row per variant, sharing a URL handle | A variable parent row, then one variation row each |
| Options | Up to 3 (Option1–3 name/value) | Attribute 1, 2, 3 name and value(s) |
| Linking | Same URL handle on every row | Each variation's Parent = the parent's SKU |
| Price columns | Price, Compare-at price | Regular price, Sale price |
| Limit | Up to 2,048 variants per product | No hard limit; performance drops past a few hundred |
The Shopify file uses Shopify's current column names (such as URL handle and Compare-at price). The product imports as a draft so you can add images and a description before it goes live.
Importing the file
- 01
Download the CSV
Use Download above the output. Open it in a spreadsheet if you want to set different prices per variant.
- 02
Shopify
Go to Products → Import, upload the file and check the preview before importing.
- 03
WooCommerce
Go to Products → All Products → Import, upload the file, and let the column mapper match the fields. Keep the parent row above its variations.
Questions people ask
Can each variant have a different price?
Yes. The file gives every variant the same starting price; edit individual rows in a spreadsheet before importing.
How are the SKUs built?
Your prefix, then a short code for each option value: MCS-NAV-M for a navy medium. Choose Full values if two values start with the same letters.
Will importing overwrite an existing product?
In Shopify, a matching URL handle updates that product. Use a new title, or change the handle, if you're creating a new product.
What about variant images?
Add image URLs in the CSV's variant image column (Shopify) or upload them per variation after import (WooCommerce).
Related tools
Last reviewed 29 September 2026.
Sources: Shopify Help: Using CSV files to import products · WooCommerce: Product CSV importer
