Shopify Image Size Limit: Uploading Photos Over 20MB

an oversized image file being compressed through a funnel into a Shopify upload

Shopify rejects product images larger than 20MB or 20 megapixels. No warning before you upload. No helpful message about what to do. Just a red error and a wasted ten minutes per image. For a store with professional photography, that limit gets hit constantly. Studio cameras shoot at 45MP or higher. A single uncompressed product photo from a modern DSLR is easily 35MB. And Shopify just says no.

I’ve watched merchants go through the same painful loop: shoot professional photos, try to upload, get rejected, open Photoshop, manually resize each image, export at lower quality, try again. For 200 products with 8 images each, that’s 1,600 manual resize operations. Nobody should be doing that. So we built the handling into CS Smart Bulk Image Upload. This post explains the limits, why they exist, what actually happens to your image quality during compression, and how to bulk upload oversized images without manual prep work.

Before diving into the upload workflow, check your current image situation with our Product Image Audit tool. It shows which products are missing images and helps you scope the upload job.

In this post

Shopify’s image size limits explained

Shopify enforces two separate limits on product images, and hitting either one rejects the upload:

  1. File size: 20MB maximum. This is the raw file weight. A 45MP RAW file converted to JPEG at high quality can easily exceed this. Even PNGs of product shots with transparent backgrounds often land above 20MB.
  2. Resolution: 20 megapixels maximum. That’s roughly 5,000 x 4,000 pixels. Modern cameras shoot at 45MP (8,192 x 5,464) or even 61MP. Even if you compress the file under 20MB, the pixel count still triggers the rejection.

Both limits are enforced at upload time. Shopify’s CDN will further resize and serve optimized versions to shoppers, so the original resolution doesn’t even benefit the end customer. The images get resized to fit the theme’s display dimensions anyway. But Shopify still rejects them at the gate.

Why does Shopify enforce this? Storage and processing costs. Every image uploaded gets stored in multiple sizes for responsive delivery. A 45MP image generates a lot of resized variants. The 20MB/20MP cap keeps their infrastructure costs predictable. I understand the reasoning. I just think they should handle the resize automatically instead of throwing an error. But they don’t, so here we are.

Why professional photos always exceed the limit

If you’re using a professional photographer (and you should be for product imagery), their deliverables will almost always exceed Shopify’s limits. Here’s why.

A Canon R5 shoots at 45MP. A Sony A7R V shoots at 61MP. Even mid-range cameras like the Nikon Z6 III shoot at 24.5MP, which is above the 20MP limit. The photographer delivers high-res files because that’s what you’re paying for: detail for zoom, crop flexibility for different aspect ratios, and future-proofing for print materials.

The file sizes compound the problem. A JPEG at maximum quality from a 45MP camera runs 25-40MB. PNGs for transparent-background product shots are even larger, regularly hitting 50MB+. And if the photographer delivers TIFF or PSD files for your archives, those can be 200MB+ per image.

So the photographer delivers files that Shopify won’t accept. The gap between “what professional photography produces” and “what Shopify accepts” is your problem to solve. Manually.

The manual resize workflow (and why it’s brutal)

Without an app, here’s what you’d do for each image that exceeds the limit:

  1. Open the image in Photoshop, Lightroom, or a free tool like Squoosh.
  2. Resize to below 4,472 x 4,472 pixels (to stay under 20MP).
  3. Export as JPEG at 80-85% quality to land under 20MB.
  4. Check the file size. If still over 20MB, reduce quality or dimensions further.
  5. Save with a clean filename.
  6. Upload to the correct product in Shopify admin.

Per image, that’s 2-3 minutes. For a collection drop of 50 products with 8 images each (400 images), that’s 13 to 20 hours of manual work. Twenty hours. For something that could be automated. And it’s not even skilled work. It’s mechanical clicking, resizing, and saving. Nobody went into ecommerce to batch-resize JPEGs.

Our free Image Compressor tool can handle individual files in the browser. But for hundreds of images, you need something that runs in bulk and matches to products automatically.

How CS Smart Bulk Image Upload handles oversized files

CS Smart Bulk Image Upload sits between your files and Shopify’s upload API. When you drag-drop or import images, the app checks each file against both limits. If a file exceeds 20MB or 20MP, it automatically compresses and resizes before pushing to Shopify. You don’t have to open Photoshop. You don’t have to check dimensions. You drag, you drop, the app handles the rest.

The compression uses smart quality detection: it finds the lowest file size that keeps the visual quality indistinguishable from the original at web display sizes. A 45MP photo gets downsized to Shopify-safe dimensions while preserving enough detail for zoom functionality. The result is typically a 2-4MB JPEG that looks identical to the original on any screen a shopper would use.

The bulk part is what saves the most time. Drop 500 images into the uploader, set the matching rules (filename-to-SKU or folder-to-product), and walk away. The app processes them in the background. Progress tracking shows you which images are done, which are in queue, and which hit errors. Error recovery means a failed image doesn’t stop the entire batch.

Quality loss: what actually happens during compression

This is the question everyone asks. “Will my product photos look worse?” Short answer: on a web page, no. On a billboard, yes. But you’re not printing billboards from Shopify.

Here’s the math. Shopify’s CDN serves product images at a maximum of 4,472 pixels on the longest edge. Most themes display the main product image at 800-1,200 pixels wide. Even the most generous zoom modal rarely shows more than 2,048 pixels. Your 45MP original has 8,192 pixels on the long side. Shopify is going to resize it to 4,472 max anyway. The pixels beyond that are wasted data.

JPEG compression at 85% quality is perceptually lossless for product photography. Studies show that humans cannot distinguish between 85% and 100% quality in JPEGs below 2,500 pixels wide. Since Shopify’s display sizes are all under 2,500 pixels, the compression is invisible to shoppers.

Keep your originals. Always. Store them on Google Drive, Dropbox, or a NAS. Upload the compressed versions to Shopify. If you ever need to re-export at full quality (for print catalogs, trade shows, packaging), you have the originals. Shopify is your web storefront, not your image archive.

SKU-based matching for large batches

Uploading images is half the problem. The other half is getting them onto the right products. CS Smart Bulk Image Upload uses SKU-based matching: name your image files to include the product SKU, and the app automatically assigns each image to its matching product.

The naming convention is simple. If your product SKU is BLUE-OXFORD-001, name the images BLUE-OXFORD-001-front.jpg, BLUE-OXFORD-001-back.jpg, BLUE-OXFORD-001-detail.jpg. The app matches on the SKU portion and uploads all matching images to that product in the order they appear.

For stores with a clean SKU system, this turns a 20-hour manual job into a 10-minute drag-and-drop. If your SKU system needs work, our SKU Generator tool can help you build a consistent naming convention before the next photo shoot. Getting the SKUs right before shooting saves more time than any upload tool ever could.

If your store uses variant-specific images (different photos per color or material), you’ll want to check out our variant images guide for the assignment step that comes after upload. Getting images onto products is step one. Assigning them to specific variants is step two, and that’s where a tool like Rubik Variant Images picks up.

Google Drive workflow for remote teams

Lots of stores work with photographers who aren’t in the same city (or country). The photographer uploads to a shared Google Drive folder. Someone on the team then downloads those files and manually uploads to Shopify. Two transfers, double the time, and the files still exceed the size limit.

CS Smart Bulk Image Upload connects directly to Google Drive. Point it at a folder, set the matching rules, and the app pulls images directly from Drive into Shopify. No intermediate download to your laptop. No manual matching. The compression happens in transit, so even 40MB files from the photographer’s camera flow through cleanly.

For teams that do frequent collection drops (fashion, seasonal products, print-on-demand), this workflow is the one that sticks. The photographer has a standing folder structure on Drive. Each collection gets a subfolder. Images go in, matched to SKUs by filename. The merchant runs the import. Done. No Photoshop, no right-clicking, no 20MB errors.

Prep checklist before any bulk upload

Whether you use CS Smart Bulk Image Upload or another method, doing 15 minutes of prep prevents 90% of upload problems. Here’s the checklist I give to every merchant before a big batch.

  1. Verify SKUs exist. Every product you’re uploading images to needs a SKU in Shopify. No SKU, no match. Export your product CSV and check the SKU column for blanks.
  2. Name files consistently. SKU first, then descriptor: SKU-front.jpg, SKU-back.jpg. Avoid spaces and special characters in filenames.
  3. Remove duplicates. Photographers often deliver multiple versions (edited, unedited, cropped, uncropped). Pick the final versions and remove the rest before uploading.
  4. Check file formats. Shopify accepts JPEG, PNG, GIF, and WebP. RAW files (CR3, NEF, ARW) are not accepted. If your photographer delivers RAW, ask for JPEG exports too.
  5. Set the order. The first image uploaded becomes the featured image. Name or number your files so the front/hero shot sorts first: SKU-01-front.jpg, SKU-02-back.jpg.

Prep once, upload clean. Skip the prep, and you’ll spend more time fixing mismatches than the upload itself would have taken manually. Our Bulk Image Renamer handles the filename cleanup if your photographer’s naming convention doesn’t match your SKUs.

For stores using combined listings (separate products grouped as variants), proper image organization per product is even more important. Each product in the group needs its own set of images. Combined listings work best when each color or style has distinct, complete photography.

FAQ

What is Shopify’s maximum image size?

20MB file size and 20 megapixels (roughly 4,472 x 4,472 pixels). Both limits are enforced. Exceeding either one rejects the upload.

Can I upload RAW files to Shopify?

No. Shopify accepts JPEG, PNG, GIF, and WebP only. Convert RAW files (CR3, NEF, ARW) to JPEG before uploading.

Does compression reduce image quality on the product page?

Not visibly. Shopify’s CDN resizes every image to a maximum of 4,472 pixels anyway. Compressing a 45MP photo to Shopify-safe dimensions results in a file that looks identical at web display sizes.

How does SKU-based matching work?

Name your image files with the product SKU in the filename. CS Smart Bulk Image Upload reads the filename, matches it to the SKU in your Shopify catalog, and uploads the image to the correct product automatically.

Can I upload from Google Drive directly?

Yes. CS Smart Bulk Image Upload connects to Google Drive. Point it at a folder and the app imports, compresses, and matches images without downloading to your computer first.

How many images can I upload at once?

Hundreds. The app processes images in the background with progress tracking and error recovery. There’s no practical upper limit per batch beyond Shopify’s 250-image-per-product ceiling.

Stop resizing images manually. Install CS Smart Bulk Image Upload and let the app handle the compression, matching, and uploading in one step.

Co-Founder at Craftshift