The short version
Match the exact text of your error to Shopify's documented list and fix what it names; for most of the documented messages that is the file itself: UTF-8 encoding, a header row that matches the template, one handle per product, related inventory columns filled together and public image URLs.
A started import can't be canceled, so export your products as a backup before every import.
Split a file that passes 15 MB, or whose upload errors or times out, into several smaller files.
Stock at more than one location goes through the inventory CSV, not the product CSV.
Shopify answered your upload with one line: Ignored line … because handle … already exists, or Invalid CSV header: missing headers. Or the import went through, and now the descriptions are full of strange characters, the images never arrived, or the variants you had are gone. Or a Choose column headings window opened instead of an import.
Each of those has a documented cause in Shopify's Help Center, and most are fixed in the file itself: one column, one cell, or the way the file was saved. This guide puts every message Shopify's troubleshooting pages list next to its cause and fix, and marks the cases where the right move is a different tool rather than another edit.
Find Your Error: From Message to Fix
Key takeaway
Shopify's page of solutions to common product CSV import problems lists 18 error messages, as of October 2026, and its import page documents two more: Network error: Unexpected token < in JSON at position 0 and Line is invalid (No details). Match the first words of your message to a row, then jump to that section.
Which section answers your message
| What you see | What it's about | Go to |
|---|---|---|
| Illegal quoting on line · Missing or stray quote on line · strange characters in imported text | The file's encoding and its quote characters | File, encoding and quote errors |
| Invalid CSV header: missing headers · Network error: Unexpected token < in JSON at position 0 · a Choose column headings window | The first row of the file | Header and column errors |
| Ignored line … because handle … already exists · Ignored line … because it did not contain product data · Validation failed: options are not unique · Line is invalid (No details) · Daily variant creation limit reached, try again | How products and variants are laid out in rows | Handle, row and variant errors |
| Inventory policy is not included in the list · Inventory quantity can't be blank · Inventory quantity is not a number · Fulfillment service can't be blank | Inventory and fulfillment columns | Inventory and fulfillment errors |
| Validation failed: price can't be blank · Not a valid product category · Validation failed: Value must be a valid product reference | Values in the price, category and metafield columns | Price, category and metafield errors |
| Validation failed: An error occurred while trying to download the image · Validation failed: getaddrinfo… · Incorrect header check · Validation failed: The uploaded image exceeds the 20 megapixel limit | Image URLs and the image files behind them | Image errors |
| No error, but products, variants or images came out wrong | What the import options and blank cells did | The import worked, but the products are wrong |
Message texts as printed on Shopify's common import issues and import products pages, read October 18, 2026.
Where Shopify Checks the File, and What It Can't Undo
Key takeaway
A product import runs from the Products page of your admin, in seven steps:
- From your Shopify admin, go to Products.
- Click Import.
- Click Add file, and then select the CSV file you want to import.
- Optional: deselect Publish new products to all sales channels if new products should go only to your online store.
- Optional: select Overwrite products with matching handles if the file should replace existing values for the columns it includes.
- Click Upload and continue.
- Review the details about the import, and then click Import products.
If Shopify shows an error after you upload the file in step 6, fix the file and upload it again. Once the file goes through, you receive a confirmation email from Shopify. Shopify's own tip for avoiding upload issues is to use the Google Chrome browser.
Step 7 is the point of no return. In the words of Shopify's import page:
Product imports started with a CSV file can't be canceled once they begin, and you can't view a history of past imports.
So export your products before you import anything. Shopify's caution on the same page is to make sure you have a backup of your product data before you start; the section on wrong results shows where to review recent changes an import made.
For the backup itself, use Shopify's product export, which Shopify lists as a way of creating a backup of your products. In Products, click Export, choose All products and a CSV type, then click Export products; an export of all products arrives by email.
- Products
- Export
Shopify Academy's two-minute walk-through below shows the same flow, from preparing the file to finishing the import. It was published in June 2023, and the template has changed since: Shopify added multiple barcodes per variant in September 2026, carried in a Variant Barcodes column. Take column names from the current template, not from the video.
The two options in the import dialog
Key takeaway
Publish new products to all sales channels is optional to change: deselect it when new products should be published only to your online store instead of to every sales channel.
Overwrite products with matching handles decides what happens to products already in your store. Without it, products in the file that match an existing handle are ignored. With it, the values in the file overwrite the existing values in the matching columns, which is what makes blank cells risky; the wrong-results table below shows how.
File, Encoding and Quote Errors
Key takeaway
Every CSV file you give Shopify must use UTF-8 encoding, and a product file should be saved with LF-style line breaks. Editing in another program is where those properties get lost: Shopify notes that special characters don't always survive a file that was exported, edited in another spreadsheet program and imported again, and that Excel and similar programs can add curly quotes.
Encoding and quote errors
| Message or symptom | Cause | Fix |
|---|---|---|
| Illegal quoting on line | An illegal character in the file: commas and quotation marks that aren't UTF-8 encoded, or a missing or stray quote | Save the file with UTF-8 encoding; if the error stays, look for a stray quote on that line |
| Missing or stray quote on line | Curly (smart) quotes added by Excel or another spreadsheet program, or an extra quote in a field | Open the file in a text editor, replace curly quotes with straight ones, and remove extra quotes on the line named in the error |
| Strange characters in descriptions or titles (no error) | The file wasn't saved with UTF-8 encoding | Re-save the file as UTF-8 and import it again, import an older copy that was saved correctly, or fix the few affected products by hand |
Shopify Help Center: common import issues and the import products troubleshooting section, read October 18, 2026.
The encoding step counts at the moment you save, before the file ever reaches Shopify:
If you save your file after forgetting to confirm its UTF-8 encoding, then your data will be corrupted when you upload it as a new spreadsheet.
Google Sheets saves files with UTF-8 encoding by default; other spreadsheet software might require an extra step. If you edit in something else, choose UTF-8 explicitly every time you save.
Excel traps: leading zeros, long numbers and the save format
Key takeaway
Four behaviors, each documented by Microsoft, are worth checking before you save a product file from Excel:
- Leading zeros and large numbers. Excel automatically removes leading zeros and converts large numbers to scientific notation, like 1.23E+15.
- Digits past the 15th. Excel has a maximum precision of 15 significant digits, so in any number with 16 or more digits, the digits past the 15th are rounded down to zero.
- Formatting afterwards. Switching a column to Text format doesn't change numbers that were already entered; it only affects numbers entered after the format is applied.
- Saving. Saving as a CSV file isn't currently possible in Excel for the web, and in desktop Excel Shopify asks you to check the export settings so the file uses commas between values.
Barcodes are long numeric codes, so they are the column to check after any Excel save. For which codes your products need and where they come from, see our Shopify barcodes guide.
Files over 15 MB
A product CSV can't exceed 15 MB, and the inventory CSV has the same ceiling. If you get an error after trying to upload a new file, or the upload times out, Shopify's fix is to split the CSV into several smaller files and upload each one; our advice is to keep every row of one handle in the same file, so no product is split across two imports.
Header and Column Errors
Key takeaway
The first line of a product CSV must be the column headers from the product CSV column table, separated by commas, and header names are case-sensitive. If a file from another store or source doesn't match the format, or any headers are missing, the import fails.
Header and column errors
| Message or symptom | Cause | Fix |
|---|---|---|
| Invalid CSV header: missing headers | The first row doesn't match the headers Shopify expects | Compare the first row with Shopify's sample file and remove extra spaces at the end of the first line |
| Network error: Unexpected token < in JSON at position 0 | The column titles don't exactly match the template headers | Correct the headers to match the sample file, capital letters included |
| A Choose column headings window opens | The file's headers are incorrect | Pick the correct header for each column from the drop-down menus, or fix the first row and upload again |
| A file with both Barcode and Barcodes columns | A file can't carry both columns; one that does fails to import | Keep one of the two; the old singular Barcode column becomes Barcodes the next time you export |
| A column you added yourself | Collection is the only column you can add without breaking the format | Delete the other added columns; use Collection to place each product in one collection |
Shopify Help Center: common import issues, import products and using CSV files, read October 18, 2026.
The current sample file starts with Title and URL handle. If the first row of yours starts with Handle, you are holding a file built on the older template, which the next table translates.
Old column names on the troubleshooting page and in older files
Key takeaway
Shopify's troubleshooting page still prints the old first row, from Handle, Title, Body (HTML) through Variant Inventory Policy and Image Src to Image Alt Text, and its fix for Inventory quantity can't be blank names the old Variant Inventory Tracker column. Shopify maintains backward compatibility with older column names, but suggests moving to the current format to ensure future compatibility.
Old names and their current columns
| Name you'll see | Column in the current template |
|---|---|
| Handle | URL handle |
| Variant Inventory Tracker | Inventory tracker |
| Variant Inventory Policy | Continue selling when out of stock |
| Image Src | Product image URL |
| Variant Barcode | Variant Barcodes in the sample file; Barcodes in the column table |
Our matching of the old reference row on Shopify's troubleshooting page to the current sample file, made from the column descriptions on Shopify's CSV page, read October 18, 2026.
Handle, Row and Variant Errors
Key takeaway
A product CSV describes one product across several rows. The first row of a product carries all its fields; each following variant row repeats the URL handle and skips the Title, Description, Vendor and Tags columns.
To import new products, the required column is Title, plus URL handle if you're adding variants; to update products, the only required columns are URL handle and Title.
Handle, row and variant errors
| Message | Cause | Fix |
|---|---|---|
| Ignored line … because handle … already exists | Two products in the file share a handle | Give every product its own handle |
| Ignored line … because it did not contain product data | A product has a handle but no product title | Add the title to the product's first row; variant rows below it leave Title empty by design |
| Validation failed: options are not unique | Two variants share the same option values, such as two medium products both in black, or the product appears again elsewhere in the file under the same handle | Make each variant's option values unique, or merge the duplicate product rows |
| Line is invalid (No details) | An existing option value is being moved to a different option position | Use a temporary option name over two imports |
| Daily variant creation limit reached, try again | A very large store hit the daily cap on new variants | Wait for the 24-hour window, then continue |
Shopify Help Center: common import issues and import products, read October 18, 2026.
A product can have up to 3 options, carried in the Option1 to Option3 name and value columns, and for a product with only one option Shopify's column table says the value should be Default Title.
Updating variants on products you already have carries its own risk of losing them, so it has its own walk-through: our guide to importing variants by CSV without losing data.
Line is invalid (No details): an option moved to another position
Key takeaway
Variant options must be unique, and Shopify checks for duplicate option names before it imports new values. A file that moves Size from Option 1 to Option 2 and adds Type as the new Option 1 therefore fails. Shopify's workaround:
- In your CSV file, use a temporary name for the option causing the conflict, such as Size. with a period instead of Size.
- Import the file with the temporary option name.
- After that import completes, create a new CSV file that changes the temporary name to the name you want.
- Import the updated file to apply the final option name.
The daily variant limit on very large catalogs
For stores with 500,000 or more product variants (excluding Plus stores), no more than 10,000 new variants can be created by CSV uploads (or API) within a 24 hour timeframe, and the timer starts at the first upload of the day. Plan a large variant import across several days; how this cap fits beside Shopify's other catalog limits is covered in how many products you can have on Shopify.
Inventory and Fulfillment Errors
Key takeaway
Some product CSV columns only work as a set, and a file with values in only some related columns results in an import error. Shopify's own example, in a note on its page about product CSV columns, is the tracker: when Inventory tracker is set to shopify, the Continue selling when out of stock and Fulfillment service columns can't be left blank.
That note then says that if they are blank, the default values in the column table apply, while the troubleshooting page lists Fulfillment service can't be blank as an error. The two pages disagree here, as they do on a blank price below: fill Inventory quantity, Continue selling when out of stock and Fulfillment service with valid values on every tracked row, which satisfies both pages on these three columns.
Inventory and fulfillment errors
| Message | Cause | Fix |
|---|---|---|
| Inventory policy is not included in the list | The policy column holds something other than deny or continue | Enter deny or continue (older files call the column Variant Inventory Policy) |
| Inventory quantity can't be blank | Inventory is tracked, but the quantity is empty | Enter a quantity, or leave Inventory tracker blank if you don't track inventory for that variant |
| Inventory quantity is not a number | Text or symbols in the quantity column | Enter a number for the items in stock |
| Fulfillment service can't be blank | No fulfillment service is named | Enter the service you use, or manual if you don't use a fulfillment service |
Shopify Help Center: common import issues and using CSV files, read October 18, 2026. Older files name the tracker column Variant Inventory Tracker.
The policy message has its own answer page, with what deny and continue each do and why the setting doesn't apply to point-of-sale orders.
Stock at more than one location: the inventory CSV
Key takeaway
Inventory quantity in a product CSV is the number of items you have in stock, and it applies only to Shopify stores that have a single location. If you use multiple locations and want to import or export quantities, Shopify's instruction is to use the inventory CSV file, a separate file with its own 15 MB ceiling.
The inventory CSV has its own safeguard. When the file includes both On hand (current) and On hand (new) columns, rows whose inventory changed after your export don't import, and you receive an email with details about the failed rows. Shopify added the On hand (new) column and renamed On hand to On hand (current) in August 2025, and warned that automated tools, scripts or external systems using the inventory CSV need updating before they use the feature.
Price, Category, Status and Metafield Errors
Key takeaway
Three messages on Shopify's troubleshooting page concern price, category and metafield values:
- Validation failed: price can't be blank. A line has no price; add the price to that line.
- Not a valid product category. The category doesn't match Shopify's Standard Product Taxonomy; enter the full category breadcrumb or the category ID, exactly as the taxonomy lists it.
- Validation failed: Value must be a valid product reference. A metafield points at a product that isn't in your store yet; import in two stages.
Shopify's own pages disagree on a blank price. The troubleshooting page lists price can't be blank as a validation failure, while the column table on the CSV page says the default value is 0.00 when no price is entered (both read October 18, 2026). Don't test which rule your file hits: put a price on every variant row, which passes under both pages.
What each value column accepts
Key takeaway
Beyond the named messages, these columns decide whether a row imports and how the product comes out:
Value columns and what they accept
| Column | Accepts | Watch for |
|---|---|---|
| Price, Compare-at price, Cost per item | The amount only, such as 9.99, without a currency symbol | A blank Price is where two Shopify pages disagree (see above) |
| Weight value (grams) | A number in grams, without the unit of measurement or decimals | Convert kilograms and pounds to grams before you import |
| Status | active, draft or archived | If the column is present, every row needs a value; if it isn't, products upload as active |
| Packed product length, width, height and dimension unit | All four filled in, or all four blank | Values in only some of them cause an import error and that product isn't imported, unless the row sets Requires shipping to false |
| Tags | Up to 250 tags per product, separated by commas | Avoid accented characters and symbols |
Shopify Help Center: using CSV files, column table, read October 18, 2026.
Metafield references: import in two stages
Key takeaway
Product references in metafields must point to a product that already exists, so a file that creates products and references them in the same pass fails with Value must be a valid product reference. Shopify's fix is to import in stages:
- Import your products without the metafield values.
- Add the metafield values back to your CSV file, and import it again with Overwrite products with matching handles selected.
Variant metafields aren't supported for product CSV import or export at all; to edit them in bulk, Shopify points you to the variant bulk editor with metafield columns added. Which other custom data travels in a product CSV is covered in our metafields guide, under what actually exports.
Image Errors
Key takeaway
A CSV holds only text, so every image arrives as a URL: Shopify downloads the image during the import and re-uploads it to your store. Each image message below is about that URL or the file behind it.
Image errors
| Message | Cause | Fix |
|---|---|---|
| Validation failed: An error occurred while trying to download the image | An image file is missing | Check that the image still exists at that URL; images removed from your store after an export make the import fail until you update their URLs |
| Validation failed: getaddrinfo: nodename nor servname provided, or not known | A mistake in the image URL | Enter the full address, protocol included, as a publicly accessible direct link to the image |
| Incorrect header check | Shopify's troubleshooting page gives no cause, only the fix | Remove the image from the line and try again; if that works, host the image somewhere else |
| Validation failed: The uploaded image exceeds the 20 megapixel limit | The image is too large | Reduce the image size or use a different image |
Shopify Help Center: common import issues and using CSV files, read October 18, 2026.
The troubleshooting page says the image URL needs http:// in front of it and must be a publicly accessible direct link. Shopify's CSV page says product images should sit behind an https:// protocol with no password protection (both read October 18, 2026). Use a full https:// address that opens the image itself, with no login in the way: that is the form the CSV page asks for, and it is a direct public link.
The size message has the same kind of gap. Its heading names a 20 megapixel limit, while the fix text under it, like Shopify's product media page, allows images of any size up to 5000 x 5000 px, or 25 megapixels. Keep images under 20 megapixels and a file passes under either number.
- One row per image. A product takes up to 250 images, each on its own row with the product's handle repeated.
- Final file names. Shopify downloads and re-uploads each image, and you can't edit a file name after the image is uploaded.
- No video or 3D. 3D models and videos aren't supported in the CSV; upload them in Content > Files instead.
- No sorting. Sorting the file in Excel or Apple Numbers can remove products from their image links, and those images are lost.
Images that sit only on your computer need a public URL before they can go into the file: upload them to your store in Content > Files, or to another image host, and copy each URL into the image column.
- Content
- Files
The Import Worked, but the Products Are Wrong
Key takeaway
These results raise no error, because the file was valid. It simply told Shopify something you didn't mean:
What you see after an import, and why
| What you see | Why | Prevent it next time |
|---|---|---|
| Products already in your store didn't change | Overwrite products with matching handles wasn't selected, so rows whose handle already exists were ignored | Select the overwrite option when the file is meant to update products |
| Values such as Vendor are now empty | With overwrite selected, a blank non-required column overwrites the matching value as blank | Delete the columns you aren't changing instead of leaving them empty; a column that isn't in the file keeps its value |
| Existing variants were replaced by one default variant | The file updated products without the Option1 name and Option1 value columns | Keep Option1 name and Option1 value in any file that touches variant columns such as SKU |
| An app or feed lost track of your variants | Changing Option1, Option2 or Option3 values deletes the existing variant IDs and creates new ones | Change option values only when every system that stores variant IDs can be updated |
| New products are active and on every sales channel | The file had no Status column, so products uploaded as active, and Publish new products to all sales channels was left selected | Add a Status column set to draft for products that aren't ready, and deselect the publishing option to limit new products to your online store |
| Products lost their images | The file was sorted in a spreadsheet editor such as Excel or Apple Numbers, which can remove products from their image links | Don't sort a product CSV; edit the rows where they are |
Shopify Help Center: import products, using CSV files and export products, read October 18, 2026.
The overwrite rules have more edges than one table row, including dependent columns and what a CSV can't delete. They are covered in full in does importing a product CSV overwrite existing products.
To review recent changes made by an import, open the store activity log in your admin settings. It is view-only, can't be exported and displays at most 250 results, and the list goes back only as far as that maximum, so check it soon after a large import.
- Settings
- General
- Store activity log
Pre-Import Checklist for a Product CSV
Key takeaway
The steps follow the file from how it is saved to the dialog you upload it in. Run them again after every round of fixes, since a re-save in a spreadsheet program can undo step two.
Before you import a product CSVTick each step as you check it in the file or in the import dialog.
Before you import a product CSV
Tick each step as you check it in the file or in the import dialog.
Export your products to a CSV file and keep that file before you import anything, because a started import can't be canceled.
Before you tick this off
- The export covers all products, not only the current page
- The backup file is saved apart from the copy you're editing
Save the CSV with UTF-8 encoding and LF-style line breaks, with commas between values.
Before you tick this off
- Edited in Google Sheets, or saved with UTF-8 chosen explicitly
- No curly quotes left in text fields
Make the first row match the template's column names exactly, capital letters included.
Before you tick this off
- No extra spaces at the end of the first line
- No added columns other than Collection
- Not both Barcode and Barcodes
Give every product a unique handle and a title on its first row.
Before you tick this off
- Variant rows repeat the handle and leave Title, Description, Vendor and Tags empty
- No two products share a handle
Keep option values unique within each product, stay within 3 options, and keep Option1 name and Option1 value in any file that edits variants.
Before you tick this off
- No two variants of a product share the same option values
- A product with only one option uses Default Title
Fill inventory and fulfillment columns together.
Before you tick this off
- Inventory tracker set to shopify has a quantity, a policy of deny or continue, and a fulfillment service
- Packed product columns: all four or none on rows that require shipping
- Stock for more than one location goes in the inventory CSV instead
Use public image URLs that open without a password, one image per row, under 20 megapixels.
Before you tick this off
- Each URL starts with https:// and opens the image itself
- The file hasn't been sorted in a spreadsheet program
Keep the file within 15 MB, set both import options, and review the details before you click Import products.
Before you tick this off
- Overwrite products with matching handles matches what the file is meant to do
- Publish new products to all sales channels is set the way you want
When to Change the Approach Instead of the File
Key takeaway
Some errors keep coming back because the product CSV is the wrong tool for the job. These are the cases where Shopify's own pages point somewhere else:
Situations where another route fits better
| Your situation | Use instead | Why |
|---|---|---|
| Stock at more than one location | The inventory CSV | Inventory quantity in a product CSV applies only to stores with a single location |
| Moving from Square, WooCommerce, Etsy, Wix, Amazon, eBay, Clover or Lightspeed R/X (Vend) | Shopify's Store Migration app | Its App Store listing says it moves product and customer data from these platforms (as listed in October 2026) |
| Editing variant metafields | The variant bulk editor | Variant metafields aren't supported for product CSV import or export |
| A file that errors on upload or times out | Several smaller files | Shopify's documented fix for upload errors and timeouts is to split the file and upload each part |
| Deleting many products | Bulk actions in Products | CSV files can't be used to delete products in bulk |
| Creating gift cards | The Shopify admin | A gift card can't be created by importing a product CSV |
| Recurring bulk edits from spreadsheets | A bulk data app such as Matrixify | Its listing describes bulk uploads and updates with Excel, CSV or Google Sheets (as listed in October 2026) |
Shopify Help Center (using CSV files, import products) and Shopify App Store listings, read October 18, 2026. App listings describe the apps in their developers' words.
If the CSV is one piece of a full platform move, our Shopify migration guide compares the routes, from the free app and a CSV import to paid migration services, and what each one moves.
The Bottom Line
Key takeaway
The table at the top of this page sends each message to its fix, and the table in the previous section sends each job that isn't a product file to its tool.
Frequently Asked Questions
Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Directs the editorial process behind Ecom Store Pro: sets its topics and the rules every AI-written page must pass before publication.
This page was written by AI. Separate AI agents that did not write it check its figures and claims against official sources and test its links and interactive tools. A human editor sets the site's editorial direction, topics and rules and checks that pages are complete and display correctly, but does not check their facts or edit their text. Details may change — always confirm critical data at shopify.com.
Editorial PolicySome links in this article are affiliate links. If you sign up for a Shopify store through these links, we may earn a commission at no extra cost to you. Read our full advertising policy.
