Get the original file behind a Shopify CDN URL
Every image on a Shopify storefront is served from Shopify's CDN with a size instruction attached, so the URL in the page is almost never the file the merchant uploaded. This tool reads a product page, rewrites each CDN URL back to its unmodified form, and downloads the originals.
How Shopify CDN image URLs are built
A typical URL looks like cdn.shopify.com/s/files/1/0000/0000/products/shirt_600x.jpg. The _600x before the extension caps the width at 600 pixels. Shopify supports a long list of these — _pico, _icon, _thumb, _small, _compact, _medium, _large, _grande, _1024x1024, _master — plus ?width= query parameters on newer /cdn/shop/ paths. Remove the suffix and the CDN returns the original upload.
Why manual saving gives you the wrong file
Right-click and save on a product page and you get whatever size the theme decided to render at that breakpoint — often a 400 or 600 pixel copy that looks fine on screen and falls apart in print, on a hi-DPI display, or when cropped for an ad. Because the size lives in the URL rather than in a rendered image, the full file is one string edit away, and the tool does that edit for every image in the gallery.
Product media, not theme graphics
Shopify keeps merchant-uploaded product photos under /cdn/shop/products/ while theme and section graphics live under /files/. The extractor prefers the product path, which is what keeps banners, logos, recommended-product thumbnails and payment icons out of your download.
Reading product data instead of scraping
Where the URL contains /products/, the tool reads the store's own public product endpoint rather than the rendered page. That returns the gallery in the merchant's chosen order, with the same image list the storefront uses — cleaner and more reliable than parsing HTML, and it also gives the correct product title for filenames.
Then optimise on the way out
Originals are frequently 3000 pixels or more. If you are re-uploading rather than archiving, set a maximum width and convert to WebP as you download so the files land already sized for the web — typically 70–90% smaller, which is one of the quickest wins available on a slow storefront.
Frequently asked questions
How do I get the full-size version of a Shopify CDN image?
Remove the size suffix before the file extension. cdn.shopify.com/.../shirt_600x.jpg becomes shirt.jpg, which returns the original upload. The tool does this for every image on a product page.
What do _grande, _large and _600x mean in a Shopify image URL?
They are size instructions to Shopify's CDN, each capping the image at a particular width. The version without any suffix is the file the merchant uploaded.
Does it work with the newer /cdn/shop/ URLs?
Yes. Those use width query parameters instead of filename suffixes, and the tool normalises both forms to the largest available version.
Why do I get product photos but not the banner images?
The extractor prefers /cdn/shop/products/, which is where merchant-uploaded product media lives. Theme and section graphics sit under /files/ and are deliberately excluded.
Does it work on stores with a custom domain?
Yes. The storefront domain does not matter as long as the URL contains /products/ — the images are still served from Shopify's CDN.
Can I download the originals and compress them in one step?
Yes. Set a maximum width, quality and output format before downloading and each image is re-encoded in your browser before it is added to the ZIP.
Note on usage: the CDN serving an image publicly does not make it free to reuse. Download only your own store's media or media you are licensed to use.
More image downloaders
Same engine, tuned for a different kind of page.