How to download all product images from Shopify in one ZIP

Shopify does not give you a "download all images" button. The images live on Shopify's CDN, and the way to reach them in bulk is through your product CSV. Below are the two realistic ways to do it: the free manual method, and a faster tool that does the organizing for you.

Before you start

  1. Shopify adminProducts → Export → All products
  2. Product CSVSeveral rows per product, links in Image Src
  3. ParcelReads every link, names files by SKU
  4. One ZIPA folder per product and a spreadsheet of every image
From your Shopify admin to an organized folder of images.

Where the images are in the export

Open the CSV and you will see that a product spans several rows that share its handle: a row for each variant and a row for each extra image, and one row can be both. The image links are in the non-empty Image Src cells, plus Variant Image for photos tied to a variant.

products_export.csv
Handle1TitleVariant SKUImage Src2Image Position3Image Alt Text
trail-mugTrail MugMUG-01https://cdn.shopify.com/s/files/1/…/mug-1.jpg?v=…1Green mug on a desk
trail-mughttps://cdn.shopify.com/s/files/1/…/mug-2.jpg?v=…2
tea-towelTea TowelTT-02https://cdn.shopify.com/s/files/1/…/towel-1.jpg?v=…1Folded linen towel

Columns without a note are left out here; your file has them too.

  1. Handle ties a product’s rows together. Extra images repeat it on their own row with most other cells empty.
  2. Image Src is a direct link to the image file on Shopify’s CDN. Variant photos can also sit in a separate Variant Image column.
  3. Image Position is the order of the product’s photos; position 1 is usually the main image.

The free manual method

This costs nothing and works for any store. The catch is that you end up with unnamed files in a single folder, and you will spend time renaming and sorting them yourself.

  1. In Shopify admin, go to Products, click Export, and export your products as a CSV file.
  2. Open the CSV in a spreadsheet app. Find the Image Src column. Every cell in that column is a direct link to one product image on Shopify's CDN.
  3. Copy the Image Src column into a bulk-download browser extension (there are several free ones for Chrome and Firefox) or feed the URLs to a download script.
  4. Download. You get one folder of image files, named whatever the CDN called them (long strings of numbers and letters, not product names).

If you have a handful of products, this is fine. If you have hundreds, the renaming and sorting is where the hours go.

Free method

Downloads/

  • mug-1.jpg
  • mug-2.jpg
  • towel-1.jpg
  • IMG_4471.jpg
  • IMG_4471-1.jpg
  • …

Every image in one folder, named however it was uploaded. Nothing says which product it belongs to.

Parcel

parcel-1a2b3c4d.zip

  • trail-mug/
    • MUG-01-1.jpg
    • MUG-01-2.jpg
  • tea-towel/
    • TT-02-1.jpg
  • manifest.csv

A folder per product, files named by SKU in their Shopify order, and a spreadsheet linking each file to its product.

The faster way: Parcel

Parcel (parcelexport.com) takes that same product CSV and returns one ZIP file, organized for you:

Nothing is installed on your store and Parcel never asks for store access. Your CSV is parsed in your browser, and the images are downloaded as originals: no resizing, no compression.

What it costs

Pricing is one-time, not a subscription. Up to 25 products is free. Larger exports are $9 (26 to 250 products), $19 (251 to 1,000), or $39 (over 1,000). Files are kept for 24 hours after your export is ready.

One payment per export, no subscription. A free export can carry up to 300 MB of images; a paid one up to 1 GB.
What fits in one Parcel export

Files stay available for 24 hours after the export is ready.

One thing to do first

Run the export before deleting products or closing your store. Once a product is gone, its image links stop working and there is nothing left to download.

If something goes wrong

Shopify emailed the export instead of downloading it
That’s normal for an export of all products, or for a product with more than 100 variants. Look in the inbox of the account that exported (the store owner also gets a copy), then save the attached CSV.
Shopify says “There was an error exporting your products”
Very large exports can time out. Filter the product list (by type, vendor or collection, for example), export each part separately, and upload each CSV to Parcel as its own export.
Parcel says some links were skipped
Parcel downloads Shopify product images from cdn.shopify.com over HTTPS. Links to other sites in the image columns are skipped and counted on screen; save those images by hand.
An image is listed in failed-downloads.csv
Its link didn’t return an image, often because the photo was replaced or the product deleted after the CSV was exported. Open the original_url from the report in a browser, and export a fresh CSV if the link is old.
Some files are named by handle instead of SKU
Those products have no SKU in the CSV, so Parcel uses the product handle. Add SKUs in Shopify and export again if you need SKU names everywhere.

Questions

Can I download all Shopify product images at once?

Not from the Shopify admin: there is no bulk image download. The product CSV export lists a link to every product image, and you can download those links with a browser extension, a script, or Parcel.

Can I download images for only some products?

Yes. Shopify can export the current page of products, products you select, or products that match a search and filters. Upload that smaller CSV and only those products are downloaded.

Are the images resized or compressed?

No. Parcel downloads the file at each link in your CSV exactly as Shopify serves it and puts it in the ZIP unchanged.

Does Parcel need access to my Shopify store?

No. You export the CSV yourself and upload it. Parcel never asks for your store login, an API token or app permissions.

What is in manifest.csv?

One row per saved image: the product title, handle, SKU, image position, the original link, the file name in the ZIP, and the alt text.

How long can I download the ZIP?

For 24 hours after the export is ready. Then access ends and the stored files are deleted, so save the ZIP somewhere safe.

Pack your first export