Craftshift logo

Product CSV Generator

Build a complete Shopify product CSV from scratch without touching a spreadsheet. Fill in your product details, add multiple variants, preview everything in a table, and download a ready-to-import CSV file that matches Shopify’s exact column format.

Shopify’s product CSV template contains over 40 columns, many of which are optional or confusing. Getting the format wrong leads to failed imports, missing images, or broken variant relationships. Industry data shows that over 30% of first-time Shopify CSV imports fail due to formatting errors, with incorrect variant row structure being the most common culprit. This tool strips away the complexity and gives you a simple form that generates a perfectly structured CSV every time, whether you have one product with ten variants or ten simple products.

Use this generator when you are setting up a new store, adding a product line, or migrating from another platform and need to build your catalog from the ground up. It is especially useful for products with multiple size and color variants, where the CSV row structure can be tricky to get right manually.

Every field in the form maps directly to a Shopify CSV column, and the generator handles all the formatting rules automatically: quoting fields that contain commas, structuring multi-variant products with the correct parent/child row relationship, and applying Shopify’s naming conventions. The result is a file you can import directly without any manual cleanup.

Whether you are a new store owner importing your first products or an experienced developer building catalogs for clients, this tool eliminates the most error-prone step in the product setup workflow. Combined with our CSV Validator, you have a complete pipeline for creating and verifying product import files.

Shopify Product CSV: Quick Reference
Columns Generated17 most commonly used columns
Variant StructureFirst row = full product data; subsequent rows = variant-only
Max Variants per Product100 (Shopify limit)
Max Options3 (e.g., Size, Color, Material)
Price FormatPlain number without currency symbol (e.g., 29.99)
Handle FormatLowercase, hyphens only, no special characters
Default Single-VariantOption1 Name: “Title”, Option1 Value: “Default Title”
EncodingUTF-8
Max Import Size15 MB / ~50,000 rows

Variants

How This Tool Works

Enter your product details in the form above, including the handle (which becomes the URL slug), title, description, vendor, product type, and tags. Then fill in at least one variant row with pricing, SKU, and inventory details. Click “Add Variant” if your product comes in multiple sizes, colors, or other options.

When you click Generate CSV, the tool builds a file that matches Shopify’s exact product CSV specification. The first variant row includes all product-level information (title, description, vendor, tags, image), while subsequent variant rows only include variant-specific fields. This is exactly how Shopify expects multi-variant products to be structured.

The preview table shows you every row before you download. Check that your handles, prices, and SKUs look correct, then click the download button to save the CSV file. You can import it directly through Shopify Admin under Products, then Import.

Step-by-Step Guide to Creating Your Product CSV

  1. Plan your product structure first. Before filling in the form, decide on your option names (e.g., Size, Color) and list all values (e.g., S/M/L/XL, Black/White/Blue). Also prepare your SKU naming convention, prices for each variant, and initial inventory quantities.
  2. Enter the product handle. The handle becomes the URL slug for your product page. Use lowercase letters, numbers, and hyphens only. For example, “Classic Cotton T-Shirt” should have the handle “classic-cotton-tshirt”. Keep it short and descriptive.
  3. Fill in product details. Enter the title exactly as you want it displayed on your store. Write an HTML description with paragraph tags, bullet lists, and formatting. Set the vendor (your brand name), product type (for filtering), and tags (for collections and search).
  4. Add your first variant. Set Option1 Name (e.g., “Size”) and Option1 Value (e.g., “Small”). If your product has a second option like color, fill in Option2 Name and Value as well. Enter the price, compare-at price (for sale items), SKU, and inventory quantity.
  5. Add remaining variants. Click “+ Add Variant” for each additional size/color combination. Keep option names consistent across all variants. Each variant needs its own unique SKU and can have a different price and inventory quantity.
  6. Generate and review. Click “Generate CSV” to see a preview table of all rows. Verify that option values, prices, and SKUs are correct. Check that the first row has all product data and subsequent rows have only variant data.
  7. Download and import. Click “Download CSV” to save the file. Go to your Shopify Admin, navigate to Products > Import, upload the file, and review the import preview before confirming.

Why This Matters for Your Shopify Store

Manually editing CSV files in Excel or Google Sheets is the most common source of import errors on Shopify. Missing quote marks around HTML descriptions, incorrect column ordering, or extra whitespace in handles can cause entire imports to fail or create broken product listings. This tool eliminates those formatting issues by generating the CSV programmatically.

Speed matters when you are building or expanding your catalog. Instead of referencing Shopify’s CSV documentation and carefully positioning data in the right columns, you fill in a simple form and get a perfectly formatted file in seconds. For stores with dozens of products and hundreds of variants, this can save hours of tedious spreadsheet work.

Accuracy matters even more. A single misplaced comma in a CSV can corrupt an entire row. A missing quote around an HTML description that contains commas splits the description across multiple columns, creating gibberish in your product data. These errors are difficult to diagnose because the CSV looks fine in a spreadsheet but fails on import. This generator produces syntactically perfect CSV output every time.

Real-World Examples

Example 1: T-Shirt with Size and Color Variants (12 variants)

A clothing brand launching a new t-shirt in 3 colors (Black, White, Navy) and 4 sizes (S, M, L, XL) needs 12 variant rows in their CSV:

RowHandleTitleOption1 (Size)Option2 (Color)PriceSKU
1classic-cotton-teeClassic Cotton T-ShirtSBlack24.99CCT-BLK-S
2classic-cotton-tee(empty)SWhite24.99CCT-WHT-S
3classic-cotton-tee(empty)SNavy24.99CCT-NVY-S
4classic-cotton-tee(empty)MBlack24.99CCT-BLK-M
…8 more rows for remaining size/color combinations

Only row 1 contains the Title, Body, Vendor, Tags, and Image. Rows 2-12 share the handle but leave product-level fields empty. This is exactly what this generator produces.

Example 2: Simple Product with No Variants (1 row)

A single-option product like a branded mug needs just one row with the default variant convention:

HandleTitleOption1 NameOption1 ValuePriceSKU
branded-ceramic-mugBranded Ceramic Mug – 12ozTitleDefault Title14.99HOM-MUG-12

When generating a simple product, set Option1 Name to “Title” and Option1 Value to “Default Title” to follow Shopify’s convention.

Example 3: Product with Three Options (24 variants)

A shoe store needs products with Size, Color, and Width options. This creates larger variant matrices:

ProductOptionsValues per OptionTotal VariantsCSV Rows
Running ShoeSize, Color, Width8, 3, 12424
Dress BootSize, Color6, 42424
SandalSize555

Remember that Shopify limits products to 3 options and 100 variants. Plan your option structure to stay within these limits. For products that need more combinations, consider splitting into separate product listings.

Product CSV Generator vs. Other Methods

MethodSpeedError RiskVariant SupportCostBest For
This ToolMinutesVery lowFullFreeNew products, small-medium batches
Manual SpreadsheetHoursHighError-proneFreeComplex custom requirements
Shopify Admin (one by one)Very slowLowFullFree1-5 products only
Matrixify AppFastLowFull$20-200/moLarge catalogs, ongoing management
Shopify APIFastLowFullDeveloper timeAutomated pipelines

Common Mistakes to Avoid

  1. Using spaces or uppercase in handles. Handles must be lowercase with hyphens. “My Product” should be “my-product”. Spaces, underscores, and special characters will cause import issues or result in ugly URLs on your store.
  2. Inconsistent option names across variants. If your first variant uses “Size” as Option1 Name, every variant must use exactly “Size” (not “Sizes”, “size”, or “SIZE”). Inconsistent names cause Shopify to create separate option groups, breaking your variant selector.
  3. Forgetting to set Published status. If you want products visible on your store immediately, set Published to “true”. Products imported as “false” appear as drafts and are invisible to customers until you manually publish them.
  4. Including currency symbols in prices. Enter prices as plain numbers (29.99), not formatted values ($29.99). Shopify uses your store’s currency setting automatically. Including symbols causes the price field to be interpreted as text, resulting in import errors.
  5. Leaving image URLs empty for variant rows. Only the first row needs the main product image. However, if you want variant-specific images (e.g., showing each color), add the Image Src on the corresponding variant row. Use our Variant Image Checker to verify image assignments after import.
  6. Exceeding the 100-variant limit. Shopify allows a maximum of 100 variants per product. A product with 4 sizes, 5 colors, and 6 materials would need 120 variants, which exceeds the limit. Restructure by splitting into separate products or reducing option values.

When to Use This Tool

ScenarioProductsRecommended Approach
New store setup10-100 productsGenerate CSV for each product, combine, validate, import
New product line launch5-50 productsGenerate one CSV with all new products
Single complex product1 product, many variantsUse this tool to get the variant structure right
Client store buildout (agency)VariesGenerate per-client CSVs with consistent formatting
Learning Shopify CSV format1-5 test productsGenerate, examine the output, understand the structure
Quick product additions between major updates1-10 productsFaster than manual entry in Shopify Admin

Tips and Best Practices

  • Use lowercase, hyphenated handles. Shopify generates handles from titles automatically, but setting them yourself gives you control over your URLs. Keep them short, descriptive, and lowercase with hyphens (e.g., classic-cotton-tshirt, not Classic_Cotton_T-Shirt).
  • Include HTML in your body field. Shopify accepts HTML in the Body (HTML) column. Use paragraph tags, bullet lists, and bold text to create well-formatted product descriptions that render correctly on your store.
  • Keep Option Names consistent. If you use “Size” for one product, use “Size” for all products (not “Sizes” or “size”). Consistent option names enable Shopify’s filtering and variant selectors to work properly across your catalog.
  • Set Compare at Price for sale items. The Compare at Price creates the strikethrough “was” price on your product page. Only fill this in if the product is currently on sale; leave it blank otherwise.
  • Use unique SKUs for every variant. Each variant should have a distinct SKU that includes identifiers for the product, color, and size. This makes inventory tracking, order fulfillment, and returns processing much easier. Use our SKU Generator to create a consistent naming system.
  • Validate before importing. After generating your CSV, run it through our CSV Validator to catch any remaining issues. This two-step process, generate then validate, virtually eliminates import failures.
  • Use tags strategically for collections. Tags in your CSV drive automated collections in Shopify. Plan your tagging strategy before importing. Use tags like “summer-2025”, “cotton”, “mens” to enable smart collections that automatically include matching products.

Related Tools

  • CSV Validator – Validate your generated CSV before importing to catch any remaining issues.
  • SKU Generator – Create structured, consistent SKU codes for all your product variants.
  • Bulk Price Editor – Apply percentage or fixed-amount price changes across your product catalog.

What columns does Shopify require in a product CSV?

Shopify requires at minimum the Handle and Title columns. However, for a useful import you should also include Body (HTML), Vendor, Product Type, Tags, Published, Option1 Name, Option1 Value, Variant Price, Variant SKU, and Variant Inventory Qty. This tool generates all the most commonly used columns automatically.

How do I structure variants in the Shopify CSV?

The first row for a product contains all product-level data (title, description, vendor, etc.) plus the first variant. Additional variants for the same product use the same Handle but leave product-level fields empty. Only variant-specific fields (option values, price, SKU, inventory) are filled in on subsequent rows.

Can I import products with images using CSV?

Yes. The Image Src column accepts a full URL to a publicly accessible image. Shopify will download the image during import. Make sure the image URL is direct (ending in .jpg, .png, etc.) and not behind authentication. For multiple images per product, add additional rows with the same Handle and different Image Src values.

What happens if my handle already exists in Shopify?

If you import a CSV with a handle that matches an existing product, Shopify will overwrite that product with the CSV data. This can be useful for bulk updates, but be careful not to accidentally overwrite products. Always use unique handles for new products.

How many products can I import at once?

Shopify allows CSV imports of up to 15MB or approximately 50,000 rows. For most stores this is more than sufficient. If you have a very large catalog, split your CSV into multiple files and import them sequentially, waiting for each import to complete before starting the next.

Why is my product showing as draft after import?

Check the Published column in your CSV. It should be set to “true” for products you want to be immediately visible on your storefront. If it is set to “false” or left blank, the product will be imported as a draft that you need to manually publish from the Shopify admin.

Can I use this tool for product updates, not just new products?

Yes. Export your existing products from Shopify, note their handles, then use this tool to generate a CSV with the same handles but updated information. When you import the file, Shopify will update the matching products. Be aware that this replaces existing data rather than merging it.

What format should prices be in?

Prices should be plain numbers without currency symbols. Use a period as the decimal separator (e.g., 29.99, not $29.99 or 29,99). Shopify uses the currency configured in your store settings. If you leave the price blank, Shopify will set it to 0.00.

How do I add multiple images for one product?

Add a new row with the same Handle and put the additional image URL in the Image Src column. Leave all other fields blank except the Handle. Shopify will associate all images with the same product. The first image in the CSV becomes the featured image.

Do I need to include all Shopify CSV columns?

No. Shopify only requires the columns you include in your CSV header row. Any missing columns will use default values. This tool generates the most commonly needed columns. If you need additional columns like Variant Weight, SEO Title, or Gift Card, you can add them manually in a spreadsheet before importing.

What is the difference between Product Type and Tags?

Product Type is a single value used for categorization and filtering in your Shopify admin (e.g., “T-Shirts”). Tags are multiple values separated by commas used for automated collections, search filtering, and organization (e.g., “cotton, summer, casual, mens”). Use Product Type for broad categorization and Tags for detailed attributes.

Can I generate a CSV for multiple products at once?

This tool generates one product per session. For multiple products, generate each one separately and combine the CSV files in a text editor or spreadsheet (keep only the header row from the first file). Alternatively, generate the first product, then edit the downloaded CSV to add additional products following the same format.

How do I handle products with only one variant?

Set Option1 Name to “Title” and Option1 Value to “Default Title”. This is Shopify’s convention for single-variant products. You still need to fill in the price, SKU, and inventory for this default variant. The product page will not show an option selector when there is only one variant.

What is the Compare at Price used for?

Compare at Price creates the “was $X” strikethrough price effect on your product page, showing customers the original price alongside the current sale price. Only set this when a product is on sale. The Compare at Price must be higher than the Variant Price. Leaving it empty means no sale pricing is displayed.

Can I include HTML formatting in product descriptions?

Yes. The Body (HTML) field accepts standard HTML including paragraphs, headings, bold, italic, lists, and images. Use <p> tags for paragraphs, <ul> and <li> for bullet lists, and <strong> for bold text. The generator handles the CSV quoting automatically, so your HTML will import correctly even if it contains commas or quotation marks.