Shopify image limits: 20 MB, 25 megapixels vs Sume image outputs

Shopify accepts product images up to 20 MB and 25 megapixels in JPEG, PNG, WEBP, HEIC or GIF. How that lines up with Sume image model sizes and formats.

4 min readSume
All posts

Shopify accepts images up to 20 MB and 25 megapixels, with an aspect ratio between 100:1 and 1:100, in JPEG, PNG, WEBP, HEIC or GIF. Sume image outputs sit well inside those size limits, and the one format to watch is SVG, which Sume lists but Shopify's image list does not.

Shopify's limits

The Shopify Help Center page on file uploads lists these limits. Read on 2026-10-03.

Shopify image limits (read 2026-10-03)
ItemLimit
File size20 MB
Pixels25 megapixels
Aspect ratioBetween 100:1 and 1:100
FormatsJPEG, PNG, WEBP, HEIC, GIF

What Sume documents on its side

The Image API docs give limits that are model-specific. For ChatGPT Image 2.5, image_size custom pixels need both edges to be multiples of 16, a maximum edge of 3840, an aspect ratio of at most 3:1, and 655,360 to 8,294,400 total pixels. The normalized aspect_ratio list runs from 1:8 to 8:1, and output_format can be png, jpeg, webp or svg.

Shopify limits against documented Sume image limits (Shopify read 2026-10-03)
CheckShopifySume docsResult
Megapixels25 MP max8,294,400 px max on ChatGPT Image 2.5 (about 8.3 MP)Inside the limit
Aspect ratio100:1 to 1:1001:8 to 8:1 on the normalized listInside the limit
FormatsJPEG, PNG, WEBP, HEIC, GIFpng, jpeg, webp, svgAvoid svg
File size20 MBNot stated in the docs readCheck each file

Where the real risk is

Pixels and ratios are not the problem for generated product images. File size and format are. A PNG of a detailed photographic scene at a high resolution tier can be large, so check the bytes of every file, and request jpeg when you want a smaller photographic file.

SVG is the one to watch. Sume's docs list it as an output_format, but Shopify's image format list does not include it. If a model offers it, keep it out of product galleries.

A pre-upload check

This script checks size and extension for a folder of downloaded images. It does not read pixel dimensions, so add an image library if you want that check too.

import pathlib

MAX_BYTES = 20 * 1024 * 1024
ALLOWED = {".jpg", ".jpeg", ".png", ".webp", ".heic", ".gif"}

def check(folder):
    for path in sorted(pathlib.Path(folder).iterdir()):
        if not path.is_file():
            continue
        if path.suffix.lower() not in ALLOWED:
            print("format not accepted:", path.name)
        elif path.stat().st_size > MAX_BYTES:
            print("over 20 MB:", path.name, path.stat().st_size)
        else:
            print("ok:", path.name)

check("./downloads")

One more rule

Check file names too. Shopify rejects names ending in certain size words, which is easy to trip when outputs are named after a scale or variant.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume