← All Shopify CSV import errors
Images cause more failed product imports than any other column. The reason is that Shopify doesn't read your image — it downloads it from the URL you provide, from its own servers, at import time. Anything that makes that download fail kills the row.
Cause: you have something in Image Alt Text or Image Position, but Image Src on that row is empty. Shopify won't accept image metadata attached to no image.
This bites people constantly after editing in a spreadsheet: you delete a bad image URL, but the alt text and position stay behind in their cells.
Fix: for every row, those three columns must be all-filled or all-empty. Either put the image URL back, or clear the alt text and position too.
Cause: Shopify's servers tried to fetch your Image Src URL and didn't get an image back. The URL might be fine in your browser and still fail here — your browser has your cookies and your session; Shopify's importer has neither.
| What you pasted | Why it fails |
|---|---|
A Google Drive link (drive.google.com/file/d/…/view) | That URL returns a web page with a preview on it, not an image file. Shopify downloads the HTML and rejects it. |
A Dropbox link ending ?dl=0 | Same problem — it's a share page, not the file. |
| A OneDrive / iCloud / WeTransfer link | Share pages, often behind a login. Shopify can't sign in. |
A path like images/shoe.jpg | Not a URL at all. Shopify needs a full https://… address reachable from the public internet. |
| A URL with spaces in it | Spaces have to be encoded as %20 or the request breaks. |
A link to localhost or an internal IP | That address means something different on Shopify's servers than on your machine. |
| A supplier URL that rate-limits or is slow | "timeout reached" — importing 500 products means 500 rapid downloads from that host, and many suppliers throttle or block that. |
Host the images somewhere that returns the image file itself. The free option you already have is Shopify's own file storage: Content → Files → Upload files, then copy each file's URL and use that in Image Src. Those URLs are fast, permanent, and can't be rate-limited against you.
If you must use Google Drive, the share link has to be converted to a direct-download form, and even then Drive may interrupt it for large files — it isn't worth the trouble for a real catalog.
A product with several images is expressed as extra rows under the same handle. Only the first row carries the product details; each additional row carries just the handle and the next image:
Handle,Title,Variant Price,Image Src,Image Position blue-widget,Blue Widget,19.99,https://…/one.jpg,1 blue-widget,,,https://…/two.jpg,2 blue-widget,,,https://…/three.jpg,3
Common mistakes: putting all the URLs in one cell separated by commas (only the first is read, and the commas may break the row); repeating the title and price on the image rows (that can create unwanted duplicate variants — see variant errors); or leaving Image Position blank so the order is unpredictable.
If images were uploaded directly onto product pages and you export, edit, and re-import, the image URLs in the export can point at copies that get removed — so the re-import silently loses them. Merchants who have hit this report recovering the files by replacing /products/ with /deleted/products/ in the image URLs in the CSV before re-importing.
The durable fix is the same as above: keep your images in Content → Files and reference those URLs, so nothing depends on a product record that might change.
Image Src builds the product's image gallery. Variant Image sets the picture shown for one specific variant, and its URL normally has to be one that's also in the product's gallery. Putting a variant picture only in Variant Image and never in Image Src is a frequent cause of "the variant has no image".
Our free browser tool flags every one of the problems above — blank Src with orphaned alt/position, share links that won't download, relative paths, unencoded spaces, private addresses — with the real row number for each. Nothing is uploaded; your catalog stays on your device.
Drop your product CSV, see every error and warning free, download the fixed file. Name your price — free if you need it.