Craftshift logo

Product CSV Validator

Validate your Shopify product CSV file before importing it into your store. Upload your CSV and get an instant report on missing columns, empty required fields, duplicate handles, pricing errors, and variant consistency issues that would cause import failures.

Importing products via CSV is the fastest way to add large catalogs to Shopify, but a single formatting error can cause an entire import to fail or, worse, silently create incorrect product listings. According to Shopify community forums, CSV import errors are among the top 5 most common issues reported by merchants, with malformed variant rows and duplicate handles accounting for over 60% of failed imports. Missing variant prices, broken image URLs, and inconsistent option values are problems that are tedious to find manually in a spreadsheet with hundreds or thousands of rows.

Upload your CSV file and the tool parses it entirely in your browser. No data is sent to any server. It checks the file structure against Shopify’s expected CSV format, validates each row for required data, identifies duplicate handles, verifies price formatting, checks image URL patterns, and reports variant consistency. You get a clear summary with row-by-row issue details so you can fix problems efficiently.

This validator is particularly valuable during platform migrations, bulk catalog updates, and seasonal inventory refreshes when you are working with files containing hundreds or thousands of rows. Finding an error in row 847 of a 2,000-row CSV by manual inspection is nearly impossible. This tool scans every row in seconds and pinpoints the exact location of each issue, saving hours of troubleshooting.

Whether you are a solo store owner importing your first 50 products or an agency managing multi-thousand-SKU catalogs for clients, CSV validation should be a mandatory step before every import. The cost of fixing errors after import, including broken product pages, incorrect prices visible to customers, and duplicated listings, far exceeds the few seconds it takes to validate the file first.

Shopify Product CSV: Key Facts
Maximum File Size15 MB per import
Maximum Rows~50,000 rows per file
Required ColumnsHandle, Title (first variant row)
Total Possible Columns35+ standard columns
EncodingUTF-8 (required for special characters)
Max Variants per Product100 variants
Max Options per Product3 options (e.g., Size, Color, Material)
Default Variant ConventionOption1 Name: “Title”, Option1 Value: “Default Title”
Import Behavior for Existing HandlesOverwrites existing product data
Your file is processed entirely in the browser. No data is uploaded to any server.

How This Tool Works

The validator reads your CSV file using the browser’s FileReader API and parses it into rows and columns. It first checks the header row for Shopify’s expected column names, reporting any missing required columns. Then it processes each data row, checking for empty required fields, proper price formatting, valid URL patterns for images, and handle uniqueness.

For variant products, the validator checks that all rows sharing the same handle have consistent option names and that each variant has a price and SKU. It also identifies orphan variant rows (rows with option values but no parent product row) and duplicate variant combinations. The results are presented as a summary with totals plus a detailed issue list showing exactly which rows need attention.

The parser handles edge cases that trip up simpler CSV readers, including quoted fields containing commas, escaped quotation marks, multi-line descriptions within quoted cells, and mixed line endings (Windows CRLF vs Unix LF). This means it processes real-world Shopify CSVs accurately, even those exported from Excel or Google Sheets with complex formatting.

Step-by-Step Guide to Validating Your CSV

  1. Export or prepare your CSV file. If you are updating existing products, start by exporting your current catalog from Shopify Admin (Products > Export). If building a new catalog, use Shopify’s CSV template or generate one with our Product CSV Generator.
  2. Upload the file to this validator. Click the file upload button and select your CSV. The file is processed entirely in your browser, so even files with sensitive product data or unreleased pricing remain private.
  3. Review the summary statistics. The validator reports total rows, unique products (handles), total variant rows, detected columns, and missing expected columns. This gives you an immediate sense of the file’s scope and structure.
  4. Address errors first, then warnings. Errors (red) indicate issues that will cause import failures, such as missing prices, empty handles, or invalid URLs. Warnings (orange) flag potential problems like missing SKUs or zero-dollar prices that may be intentional but should be verified.
  5. Fix issues in your spreadsheet. Use the row numbers from the issue report to locate and fix problems in your CSV editor. Each issue includes the specific field and a description of what is wrong and how to fix it.
  6. Re-validate after fixing. Upload the corrected file and run validation again. Repeat until you see zero errors. A clean validation result gives you confidence the import will succeed on the first attempt.
  7. Import into Shopify. Go to Shopify Admin > Products > Import, upload the validated CSV, and preview the import. Shopify will show a summary of products to be created or updated before committing the changes.

Why This Matters for Your Shopify Store

A failed CSV import wastes time and can leave your store in a messy state. Partial imports are particularly problematic because some products get created while others fail, making it difficult to know what succeeded and what needs to be re-imported. Duplicate handles can overwrite existing products, incorrect prices can cause undercharging or overcharging, and missing images leave products looking unprofessional.

For stores migrating from another platform or managing large catalogs through CSV files, validation is an essential step in the workflow. Catching errors before import is dramatically faster than finding and fixing them after products are already in your Shopify admin. This tool gives you confidence that your CSV will import cleanly on the first attempt.

The financial impact of CSV errors extends beyond wasted time. A pricing error that goes live can result in orders at incorrect prices that you are legally required to honor in many jurisdictions. A duplicate handle that overwrites a best-selling product can take down a page that generates hundreds of dollars per day. Validation is cheap insurance against these costly mistakes.

Real-World Examples

Example 1: Fashion Store Migration (2,400 products)

A fashion retailer migrating from WooCommerce exported their catalog and converted it to Shopify format. The initial validation revealed critical issues:

IssueCountImpactResolution
Missing Variant Price312 rowsProducts created with $0.00 priceMapped WooCommerce “Regular price” to “Variant Price”
Duplicate handles (different products)47 pairsProducts would overwrite each otherAdded color suffix to handles (e.g., classic-tee-blue)
HTTP image URLs2,400 rowsImages may fail to download during importBulk replaced http:// with https://
Inconsistent Option1 Name89 rowsVariant selectors display incorrectlyStandardized “Sizes” to “Size” across all rows

After fixing these issues and re-validating with zero errors, the import completed successfully with all 2,400 products correctly structured.

Example 2: Supplement Store Bulk Update (800 products)

A supplement store needed to update prices across their entire catalog for a new pricing tier. Their CSV update revealed issues that would have caused customer-facing problems:

IssueCountImpactResolution
Price formatted as “$29.99”800 rowsImport would fail (currency symbol not allowed)Removed $ symbols, kept plain numbers
Compare At Price lower than Variant Price23 rowsNo strikethrough pricing shownSwapped Compare At and Variant Price values
Empty Published column800 rowsAll products imported as draftsSet Published to “true” for all rows

Example 3: Handmade Jewelry Store (150 products, 600 variants)

A jewelry maker with multi-variant products (size and material options) had variant structuring issues:

IssueCountImpactResolution
Title set on variant rows (not just first row)450 rowsShopify creates duplicate productsCleared Title on all rows except first per handle
Missing Option2 Value38 rowsIncomplete variant combinationsAdded material values (Gold, Silver, Rose Gold)
No Variant SKU600 rowsNo inventory tracking possibleGenerated SKUs using our SKU Generator tool

CSV Validator vs. Other Validation Methods

MethodCostPre-Import CheckRow-Level DetailPrivacyVariant Validation
This ToolFreeYesYes (exact row numbers)100% browser-basedYes
Shopify Import PreviewFreePartial (summary only)NoData sent to ShopifyLimited
Manual Spreadsheet ReviewFreeYesOnly if you find themLocalNo automated checks
Matrixify / Excelify App$20-200/moYesYesData on third-party serversYes
Custom Script (Python/Node)Free (dev time)YesYesLocalDepends on implementation

This tool provides the fastest, most private way to validate a Shopify CSV before import. Unlike Shopify’s own import preview, which only shows a summary and catches structural issues, this validator checks every row for data quality issues like invalid prices, inconsistent option names, and Compare At Price logic errors.

Common Mistakes to Avoid

  1. Setting Title on every variant row. Only the first row for each handle should have the Title, Body, Vendor, and other product-level fields filled in. If you set Title on subsequent variant rows, Shopify may interpret them as separate products or overwrite data unpredictably.
  2. Using inconsistent handle formatting. Handles must be lowercase with hyphens. Spaces, uppercase letters, and special characters cause import issues. “Men’s Blue T-Shirt” should become “mens-blue-t-shirt” in the Handle column.
  3. Including currency symbols in price fields. Variant Price and Compare At Price columns must contain plain numbers (e.g., 29.99), not formatted currency (e.g., $29.99 or 29,99 EUR). Shopify uses your store’s currency setting automatically.
  4. Forgetting the default variant for simple products. Products without variants still need Option1 Name set to “Title” and Option1 Value set to “Default Title”. Omitting these fields can cause import errors or create products without purchasable variants.
  5. Saving CSV with wrong encoding. Excel’s default “CSV (Comma delimited)” format uses ANSI encoding, which corrupts special characters. Always choose “CSV UTF-8 (Comma delimited)” when saving from Excel. Google Sheets exports as UTF-8 by default.
  6. Leaving Compare At Price lower than Variant Price. When Compare At Price is set, it must be higher than Variant Price. Otherwise, no strikethrough “was” price appears, and the sale formatting breaks. This tool flags these inverted price pairs.
  7. Using the same handle for different products. If two genuinely different products share a handle, the import treats them as variants of the same product. This merges unrelated products into a single listing. Always use unique handles for distinct products.

When to Use This Tool

ScenarioWhen to ValidateKey Checks to Focus On
New store setup (first product import)Before your very first importColumn structure, required fields, handle format
Platform migration (WooCommerce, BigCommerce, etc.)After conversion, before importAll checks, especially price format and variant structure
Bulk price updateBefore importing price changesPrice formatting, Compare At Price logic
Seasonal catalog refreshBefore adding new seasonal productsHandle uniqueness, image URLs, Published status
Inventory count updateBefore importing stock changesVariant Inventory Qty formatting, handle matching
Agency work (client catalogs)Before every client importFull validation as a QA checkpoint
Automated feed/export troubleshootingWhen imports fail unexpectedlyRow-level error details to pinpoint the failure

Tips and Best Practices

  • Start with Shopify’s CSV template. Export a sample product from your Shopify admin as a CSV to get the correct column format. Use this as your template when building import files.
  • Use consistent handle formatting. Handles should be lowercase, use hyphens instead of spaces, and contain only alphanumeric characters. Example: “mens-blue-cotton-tshirt” instead of “Men’s Blue Cotton T-Shirt”.
  • Leave variant rows partially empty. For multi-variant products, only the first row needs the full product details (Title, Body, Vendor, etc.). Subsequent variant rows only need the Handle, Option values, Variant Price, Variant SKU, and Image Src.
  • Check your image URLs are accessible. Shopify will attempt to download images from the URLs in your CSV during import. Make sure the URLs are publicly accessible and point to actual image files. Broken URLs result in products without images.
  • Save as UTF-8 CSV. If your product data contains special characters, accents, or non-Latin scripts, ensure your CSV is saved with UTF-8 encoding. Incorrect encoding causes garbled text in product titles and descriptions.
  • Always backup before bulk updates. Before importing a CSV that updates existing products, export your current catalog as a backup. If something goes wrong, you can re-import the backup to restore your products to their previous state.
  • Validate incrementally for large catalogs. For files with 5,000+ products, consider splitting into smaller batches and validating each one. This makes it easier to track down and fix issues without being overwhelmed by a massive error list.

Related Tools

What columns does Shopify expect in a product CSV?

Shopify’s standard product CSV includes: Handle, Title, Body (HTML), Vendor, Product Category, Type, Tags, Published, Option1 Name, Option1 Value, Option2 Name, Option2 Value, Option3 Name, Option3 Value, Variant SKU, Variant Grams, Variant Inventory Tracker, Variant Inventory Qty, Variant Inventory Policy, Variant Fulfillment Service, Variant Price, Variant Compare At Price, Variant Requires Shipping, Variant Taxable, Variant Barcode, Image Src, Image Position, Image Alt Text, Gift Card, SEO Title, SEO Description, Variant Image, Variant Weight Unit, Variant Tax Code, Cost per item, and Status.

How do I format variant products in my CSV?

For a product with multiple variants, the first row contains all product-level data plus the first variant. Additional variants are added as separate rows that share the same Handle but leave product-level fields (Title, Body, Vendor, etc.) empty. Each variant row must include the Handle, Option values (Option1 Value, Option2 Value, etc.), Variant Price, and Variant SKU.

What happens if my CSV has duplicate handles?

In Shopify’s CSV import, rows with the same handle are treated as variants of the same product. If you accidentally give two different products the same handle, they will be merged into one product listing. If you are updating existing products, the handle must match exactly. This validator flags duplicate handles so you can verify whether they are intentional variants or accidental duplicates.

Can I update existing products with a CSV import?

Yes. When you import a CSV with handles that match existing products, Shopify will overwrite the existing product data with the CSV data. This is useful for bulk price updates, inventory changes, or description edits. However, be careful: any field left empty in the CSV may clear the existing data for that product. Always export your current products as a backup before importing updates.

What is the maximum file size for Shopify CSV imports?

Shopify allows CSV files up to 15MB in size. For most stores, this accommodates several thousand products. If your CSV exceeds this limit, split it into multiple files and import them sequentially. This validator has no practical file size limit since it processes the file in your browser.

Why are my images not importing correctly?

Common image import issues include: URLs pointing to private or password-protected files, URLs that redirect (Shopify needs direct image URLs), file formats not supported (use JPG, PNG, or GIF), and URLs with spaces or special characters that are not URL-encoded. Test each image URL in a browser’s incognito mode to verify it loads correctly.

How do I handle products with no variants?

Products without variants still need the Option1 Name and Option1 Value columns. Set Option1 Name to “Title” and Option1 Value to “Default Title”. This is Shopify’s convention for single-variant products. The Variant Price and Variant SKU fields are still required for the product’s default variant.

Can I include HTML in the Body column?

Yes. The Body (HTML) column accepts HTML formatting including headings, paragraphs, lists, bold, italic, and images. Make sure your HTML is properly enclosed in quotes in the CSV if it contains commas or line breaks. Most spreadsheet applications handle this automatically when you save as CSV.

What encoding should my CSV use?

Use UTF-8 encoding, which is the standard for Shopify CSV imports. If you are editing your CSV in Excel, choose “CSV UTF-8 (Comma delimited)” when saving. Google Sheets exports as UTF-8 by default. Incorrect encoding causes special characters, accents, and non-English text to appear garbled after import.

How do I add SEO titles and descriptions via CSV?

Include the “SEO Title” and “SEO Description” columns in your CSV. The SEO Title should be under 70 characters and the SEO Description under 320 characters for optimal search engine display. If these columns are empty, Shopify will auto-generate SEO metadata from your product title and description, which is usually less optimized than custom-written SEO content.

What does the “Published” column do?

The Published column controls whether a product is visible on your storefront immediately after import. Set it to “true” for products you want live, and “false” for draft products. If the column is missing or empty, Shopify defaults to creating products as active (published). Many merchants accidentally leave this blank and wonder why test products appear on their live store.

How do I fix a “Missing Expected Columns” error?

This error means your CSV header row does not include one or more columns that Shopify typically expects. Check that your column names match exactly, including capitalization and spaces. For example, “Body (HTML)” must include the parentheses. If you intentionally omitted optional columns, this warning can be safely ignored, but missing required columns like Handle or Variant Price will cause import issues.

Can I validate CSV files from other platforms before converting?

This tool is specifically designed for Shopify’s CSV format. If you have a WooCommerce, BigCommerce, or other platform export, convert it to Shopify format first using our WooCommerce to Shopify Converter or equivalent tool, then validate the converted file here.

Why does my CSV show errors for rows that look correct in Excel?

Excel sometimes hides formatting issues that affect CSV exports. Common culprits include: invisible leading/trailing spaces in cells, numbers stored as text (or vice versa), hidden characters from copy-pasting, and Excel auto-formatting that changes numbers to dates or scientific notation. Try opening the CSV in a plain text editor like Notepad or VS Code to see the raw data.

Is there a limit to how many issues the validator reports?

The validator checks every row in your CSV but displays up to 100 issues at a time for readability. If your file has more than 100 issues, fix the first batch, re-validate, and the next set of issues will appear. In practice, many issues share a common root cause (like a missing column), so fixing one problem often resolves dozens of related errors.