Adding Multiple Images to Shopify Products Using a CSV File
To add multiple images to a product with a Shopify CSV, use one row per image. Keep the product’s details on its first row with the first image URL, then add a new row for each extra image that contains only the product’s handle, the image URL and, optionally, the image position and alt text.
Shopify doesn’t accept several image links in a single cell, so putting all images on one row usually means only one imports. Getting the row structure right avoids duplicate variant errors, missing images and duplicated files in your store.
How to Add Multiple Images to a Shopify CSV
Each image needs its own row, linked to the product by its handle. You can build the file in any spreadsheet program by following these steps:
- Start from Shopify’s template or an export. This gives you the correct column headers.
- Fill in the product’s first row. Add the handle, title, description, variant details and the first image URL.
- Insert a row for each extra image. Copy the product’s handle into the first column of each new row.
- Add the image details. Enter the image URL and, if you want, the image position and alt text, leaving the other columns blank.
- Import the file. Go to Products > Import, add the file, preview it and import.
- Check the results. Open a few products to confirm every image appears in the right order.
For a product without variants, an extra image row should contain nothing but the handle and image columns. Adding option values or other variant data to these rows makes Shopify treat them as new variants.
Example CSV layout
This simplified example shows one product with three images. The first row holds the product details, and the next two rows add the extra images:
| Handle | Title | Variant Price | Image Src | Image Position | Image Alt Text |
|---|---|---|---|---|---|
| linen-shirt | Linen Shirt | 39.00 | https://example.com/linen-shirt-front.jpg | 1 | Linen shirt in white, front view |
| linen-shirt | https://example.com/linen-shirt-back.jpg | 2 | Linen shirt in white, back view | ||
| linen-shirt | https://example.com/linen-shirt-detail.jpg | 3 | Close-up of linen shirt collar |
Column names can differ slightly depending on the template you use. Shopify’s current documentation calls the image columns product image URL, image position and image alt text, while many exports still use headers such as Image Src.
Add multiple images to products with variants
When a product has variants, each variant already has its own row. You can place image URLs on those variant rows, then add image-only rows below them if the product has more images than variants.
On variant rows, skip the title, description, vendor and tags columns and fill in the variant details, such as option values, price and SKU. Image-only rows still contain just the handle and image columns, without option values.
To show a specific photo when a shopper picks an option, add its URL to the Variant Image column on that variant’s row. Each variant row takes one image URL in this column.
Set the image order and alt text
Image position controls the order images appear on the product page. Images display in ascending order starting from 1, so the image with position 1 becomes the main product image.
Alt text is optional but useful for accessibility and image search. Shopify allows up to 512 characters and recommends 125 characters or fewer, so describe each image briefly and specifically.
CSV Image Requirements
A CSV file can only hold text, so images must already be hosted online before you import. Make sure every image URL meets these requirements:
- Publicly accessible. URLs must use https and can’t be behind a password or login.
- Direct image links. Each URL should point to an image file, not a web page or gallery.
- Images only. Videos and 3D models can’t be added through the product CSV.
- Up to 250 images per product. Shopify supports a maximum of 250 images on each product.
Shopify downloads each image during the import and stores its own copy. After a successful import, the original URLs are no longer needed, though it’s wise to keep the source files as a backup.
Why CSV Imports Duplicate Images in Files
If your CSV links to images already uploaded to Content > Files, Shopify downloads them again during the import. The new copy is stored with your product images, while the original stays in Files, which Shopify describes as expected behavior.
This is why stores that reuse the same image, such as a size chart, across many products can end up with dozens of duplicate files. To avoid this, host the images somewhere else before importing, or upload them directly to products in the admin after the import.
If duplicates have already been created, filter your Files library to find unused copies and delete them in bulk. Check where each file is used before deleting, so you don’t remove images that products still rely on.
Common Errors When Importing Multiple Images
Many image import problems come from how rows are structured. Watch for these errors and their usual causes:
- “The variant ‘Default Title’ already exists.” Extra image rows include option values or variant data, so Shopify reads them as duplicate variants.
- “Ignored because handle already exists.” The product already exists and the overwrite option wasn’t selected, or the rows weren’t structured as one product.
- Only one image imported. Several URLs were placed in a single cell, separated by commas or semicolons, which the native import doesn’t support.
- Stock imported as zero. Inventory or variant data ended up on the wrong rows, so keep it on each variant’s row.
- Images missing after import. URLs weren’t public, required a login or didn’t point directly to an image file.
- Import fails after editing an export. Products or images were removed after exporting, but the image URLs in the file weren’t updated.
Can You Add Multiple Images to One Variant?
Shopify’s native CSV assigns a variant image through a single Variant Image value per variant row. Products can have many images, but each variant links to one image in the standard setup.
Stores that want a separate gallery for each variant usually rely on a theme feature or an app that groups images by variant. Some import apps also accept several image links in one cell, separated by semicolons, which is a different format from Shopify’s native CSV.
Other Ways to Add Multiple Images in Bulk
The native CSV works well once the structure is right, but it isn’t the only option. Depending on your catalog, these alternatives may be easier:
- Upload in the admin. For a handful of products, drag several images into a product’s media section at once.
- Import apps. Some apps accept multiple image URLs in one cell or offer extra features for variant images and large catalogs.
- The Admin API. Developers can add product media programmatically for recurring imports from another system.
If you manage product data across Shopify, WooCommerce or Wix, Bulkflow supports bulk import, export and updates to existing product records with field mapping. That can help when you’re preparing or updating product data for many items at once.
Conclusion
Adding multiple images with a Shopify CSV comes down to one rule: give every image its own row, linked by the product’s handle. With public image URLs, clean image-only rows and a quick test import, your products can launch with complete galleries instead of a single photo. We hope this guide helps you handle Shopify CSV multiple images with confidence. To import and update product data in bulk, you can explore Bulkflow.



