CSV import

CSV Import for Shopify Variants

Adding 500 variants manually = 5 hours. Via CSV = 5 minutes upload.

Last updated: July 30, 2026By

Start free trialAdd as a preferred source on Google

If you need to add a few hundred variants, the product editor gets slow fast. A spreadsheet is quicker: you build every size, color and material combination in rows, upload one file, and Shopify creates the variants in the background.

Get the template

Don't build the CSV from scratch. Go to Products → Export, pick one product (or all products) and export as a plain CSV file. You get a file with every column header your store currently expects, in the right order and with the right spelling.

Shopify has renamed some headers over the years, so a template copied from an old blog post can fail on import. An export from your own store is always current. Keep the header row, delete the sample rows you don't need, and save it as UTF-8 so accented characters in titles survive.

Key columns

A product CSV has dozens of columns, but only a handful decide how variants are created. These are the ones to get right:

Header names can differ slightly in newer exports. Match whatever your own export file shows.

One row per variant

Each row is one variant. Rows that share a handle become one product, and the option values on each row define which combination that variant is. The option names (Size, Color) only need to appear on the first row of the product, but filling them on every row does no harm and makes sorting easier.

Images work the same way. Put a public image URL in Image Src and Shopify downloads it. Put a URL in Variant Image to attach a specific photo to that variant, so the red rows show the red shirt. Our per-color variant image guide covers how that looks on the product page.

Worked example: a t-shirt with 3 sizes and 2 colors

Say you sell a cotton tee in Small, Medium and Large, in Black and White, with the Large priced $2 higher. That's 6 variants, so 6 rows:

HandleOption1 Value (Size)Option2 Value (Color)Variant SKUVariant Price
cotton-teeSmallBlackTEE-S-BLK24.00
cotton-teeSmallWhiteTEE-S-WHT24.00
cotton-teeMediumBlackTEE-M-BLK24.00
cotton-teeMediumWhiteTEE-M-WHT24.00
cotton-teeLargeBlackTEE-L-BLK26.00
cotton-teeLargeWhiteTEE-L-WHT26.00

Fill Title, Option1 Name (Size) and Option2 Name (Color) on the first row. Then go to Products → Import, upload the file and check the preview Shopify shows before you confirm. The import runs in the background and Shopify emails you when it finishes.

Step-by-step import

  1. Export one existing product to get a current template.
  2. Build your rows in Google Sheets or Excel, one row per variant.
  3. Check SKUs are unique and every row has a handle.
  4. Save as CSV (UTF-8). Shopify's importer accepts files up to 15 MB.
  5. Go to Products → Import and upload. Tick "Overwrite products with matching handles" only if you mean to update existing products.
  6. Review the preview, start the import and wait for the confirmation email.
  7. Open one or two products and spot-check prices, stock and images.

Common errors

When not to use variants at all

CSV import makes it easy to create huge variant grids, and Shopify now allows far more per product (see our note on the 2,048 variant limit). That doesn't mean every choice should be a variant.

Variants are for things you stock or price at the SKU level: size, color, material. A customer's name, a gift message or an uploaded photo should not be a variant, because you'd be inventing SKUs for text nobody has typed yet. Those belong in personalization fields that save to the order as line-item properties. Our guide to custom options without creating variants shows how to split the two. Print It My Way handles that side with text fields, dropdowns and live preview, and the Free plan covers your first product.

Frequently asked questions

How to import Shopify variants via CSV?

Go to Products → Import and upload your CSV. Each row is one variant, and rows that share the same handle become one product. Check the preview before you confirm the import.

What columns are required in variant CSV?

At minimum you need Handle, Title, the option name and value columns, and usually Variant SKU, Variant Price and Variant Inventory Qty. Export a product from your own store first so the headers match what your store expects.

Can CSV import add 500+ variants at once?

Yes. One file can hold many products and hundreds of variant rows, as long as each product stays within Shopify's per-product variant limit and the file is under 15 MB.

How to add variant images via CSV?

Put a public image URL in the Variant Image column on each variant row. Shopify downloads the image during import and attaches it to that variant.

Common CSV import error causes?

The usual causes are missing handles, duplicate option combinations, wrong weight units and spreadsheet software reformatting SKUs or sizes. A compare-at price lower than the price won't fail the import, but it won't show a sale either.

How long does CSV import take?

A file with a few hundred variants usually finishes within minutes. Shopify runs the import in the background and sends an email when it's done.

Can I update existing variants via CSV?

Yes. Tick "Overwrite products with matching handles" and Shopify updates products whose handles match rows in your file. Leave it unticked if you only want to add new products.

Can I delete variants via CSV?

No, a CSV import can add and update but not delete. Remove variants in the product editor, with bulk actions, or through the Admin API.

Related reading

Sources & further reading

Primary sources referenced in this article. We link to official platform documentation and standards bodies rather than secondary summaries so you can verify claims directly.

Try it free on Shopify

Print It My Way's permanent Free plan includes live preview, custom options, and Cart Transform pricing.

Install Print It My Way