Shopify Product CSV Explained

Updated August 2026 · 7 min read

Shopify exports product data in a distinctive CSV format that confuses many people the first time they open it. This guide explains how the format actually works, so you can read, edit or convert it with confidence.

Note: CSV Pilot is an independent tool and is not affiliated with or endorsed by Shopify.

The key concept: one row per variant

The most surprising thing about a Shopify product CSV is that a product usually spans multiple rows. The first row of a product carries its title, description (body), vendor and tags. Every variant — every size, every color — gets its own row with its own price, SKU and inventory.

Rows belonging to the same product are linked by the Handle column: a URL-friendly identifier (like classic-tee) that repeats on every row of that product. The first row of a product has the title filled in; the following rows leave the title empty and repeat only the handle.

The option columns

Variants are described by up to three pairs of columns:

  • Option1 Name / Option1 Value — e.g. "Size" / "Small"
  • Option2 Name / Option2 Value — e.g. "Color" / "Black"
  • Option3 Name / Option3 Value — a third dimension if needed

A product with sizes and colors has one row per size×color combination, each carrying its own variant price, SKU and inventory quantity. A simple product with no variants has a single row where Option1 Name is "Title" and Option1 Value is "Default Title" — Shopify's placeholder.

Other important columns

ColumnMeaning
HandleProduct identifier linking its rows together
TitleProduct name (first row of the product only)
Body (HTML)Description — may contain HTML
Variant PriceSelling price for that variant row
Variant Compare At Price"Was" price for showing discounts
Variant SKUStock code per variant
Variant Inventory QtyStock per variant
Image SrcImage URL — one image per row, multiple rows per image
Statusactive / draft / archived

Images work differently

Product images are attached by URL. A product with five photos has five rows that repeat the variant data and differ only in the Image Src column. This is why Shopify exports often have far more rows than products.

Common tasks

  • Bulk price update: edit the Variant Price column — but remember each product appears on many rows, so you are editing per variant, not per product.
  • Adding products: every new product needs its handle, a first row with the title, and one row per variant.
  • Moving to another platform: the option-columns structure rarely matches other systems' formats, so the data needs restructuring — for example delivery-platform templates use option groups with delta pricing instead.

Converting a Shopify CSV to another format

Because of the one-row-per-variant layout and the placeholder "Default Title" rows, converting a Shopify export by hand is tedious and error-prone. CSV Pilot detects Shopify product exports automatically, holds the file unchanged until you ask, and then converts it — collapsing variant rows into products with option groups and delta pricing — for review and export.

Try CSV Pilot

Create, edit and convert CSV files with AI — free, no signup.

Open CSV Pilot

Related guides