The short answer: upload one large image
Shopify doesn't want a different file for every screen. Your theme asks Shopify's CDN for the image at several widths and the browser downloads the one that fits the screen. So the job at upload time is to give the theme a source big enough for its largest request, in the aspect ratio the section shows, and inside Shopify's limits. Shopify says it plainly: "Always upload the best quality images that you can provide"2.
The one documented pixel size is for products: "For square product images, a size of 2048 x 2048 px usually displays best"1. Everything else on this page comes from Shopify's help pages or from reading the source of Shopify's two reference themes, Dawn 16.0.0 and Horizon 4.1.51112. Third-party themes set their own sizes. If you use one, its documentation wins.
Shopify's upload limits
| Limit | Value | Where Shopify says it |
|---|---|---|
| File size | Under 20 MB | Product media, Files, Uploading images1 |
| Dimensions, product and collection images | Up to 5,000 × 5,000 px or 25 MP | Product media types1 |
| Megapixels, Content > Files | 25 MP | Uploading and managing files3 |
| Megapixels, "Uploading images" page | 20 MP | Uploading images2 |
| Aspect ratio, Files | Between 100:1 and 1:100 | Uploading and managing files3 |
| Formats | JPEG, PNG, GIF, HEIC and WebP everywhere; product media also lists PSD, TIFF, BMP and SVG | Product media types, Files13 |
| Largest size a theme can request | 5,760 px wide or tall | image_url filter8 |
The pages disagree on megapixels. Product media and Files allow 25 MP. The "Uploading images" page says images "can't exceed" 20 MP or 20 MB, and its own example shrinks a 5,000 × 5,000 px (25 MP) image to 4,000 × 4,000 (16 MP)2. Staying under 20 MP clears every page. A 4,000 × 4,000 square or a 5,000 × 4,000 photo does. None of the sizes recommended here come close.
Sizes by image type
"Upload" is what we recommend you give Shopify. "What the theme requests" is the largest width Dawn or Horizon asks the CDN for, read from the theme code. Where a theme leaves the ratio to you, the table says so.
| Image | Upload | Ratio | What the theme requests |
|---|---|---|---|
| Product | 2,048 × 2,048, or 2,048 × 2,560 for portrait | 1:1 or 4:5. Pick one for the whole catalog. | Dawn: gallery up to 1,946 px, zoom up to 4,096. Horizon: up to 3,840. |
| Collection | 2,048 × 2,048 | 1:1 by default | Dawn collection card up to 3,000 px. Horizon up to 3,840. |
| Image banner / slideshow | 3,840 px wide, e.g. 3,840 × 2,160 or 3,840 × 1,280 | Theme-dependent (see below) | Dawn and Horizon: up to 3,840 px, shown at 100% of the screen width. |
| Mobile hero (Horizon) | 1,600 px wide, e.g. 1,600 × 2,000 | Your choice | Horizon's optional separate mobile image, up to 1,600 px. |
| Logo | Dawn: 600 px wide or more. Horizon: 300 px tall or more. | Your logo's own | Dawn: 50 to 300 px wide, at 1x, 1.5x and 2x. Horizon: 12 to 100 px tall, at 1x, 2x and 3x. |
| Favicon | 32 × 32 px | 1:1 | Both themes request it at 32 × 32. |
| Blog featured image | 3,840 × 2,160 | Your choice; keep it the same across posts | Dawn: up to 3,000 px. Horizon: up to 3,840. |
Every row is a preset in the Shopify image resizer, which crops or pads to these sizes in your browser.
Shopify banner size: why there's no single number
Banner height is a theme setting, not an image property. Dawn's image banner has four heights: "Adapt to first image", Small, Medium and Large. With Adapt, the section takes your image's own aspect ratio, so a 3:1 image makes a 3:1 banner and nothing is cropped. With the fixed heights, the section has a minimum height of 420, 560 or 720 px on screens 750 px and wider (42, 56 and 72rem at Dawn's default type scale), and the image fills the box with object-fit: cover, centred11.
That's where banner images get their edges cut off. On a 1,440 px-wide laptop, Dawn's Medium banner is a 1,440 × 560 box, about 2.6:1. A 16:9 image fills the width, and only 69% of its height shows. Large (1,440 × 720) shows 89%. A 3:1 image in the same Medium box keeps its full height and loses a little at the sides: 86% of the width shows. On phones the box gets taller relative to its width, so the sides go instead.
Horizon sizes its hero by screen height instead: Medium is 55% of the viewport height from 640 px wide and 65% from 960 px. It can also take a separate mobile image12. The practical rules for both themes:
- Keep text and faces away from the edges. Shopify's advice is that slideshow and background images "shouldn't have text in them", because the theme may move or crop it2. Put the headline in the section's text settings instead.
- Set a focal point on the image in the admin. Shopify keeps focal points in frame on Dawn 7.0.0 and later and on the Horizon family of themes2.
- If you want exact control, use "Adapt to first image" and crop the image to the ratio you want before uploading.
Product images: one ratio for the whole catalog
Shopify's advice is to use the same aspect ratio for every product image so they display at the same size1. That matters most in collection grids. Dawn's product cards default to "adapt", so each card takes its image's shape and a mixed catalog gives a ragged grid. Horizon's product cards default to portrait, a 4:5 frame1112.
Square at 2,048 × 2,048 is the safe default, and it's the size Shopify names for product grids too6. If your theme shows portrait cards, 2,048 × 2,560 (4:5) fills them without cropping. For products that aren't the right shape, pad them onto a plain background rather than cropping the product. The resizer's "fit" mode does exactly that.
Logo and favicon
Shopify's theme settings page says "Logo images have a maximum width of 300 px"5. That's Dawn: its logo width slider runs from 50 to 300 px (default 100), and the header asks for the logo at 1x, 1.5x and 2x that width, so a 600 px-wide file stays sharp at the largest setting on high-density screens11. Horizon works the other way. It sets logo height, 12 to 100 px (default 36 on desktop, 28 on mobile), and requests 1x, 2x and 3x, so give it a file at least 300 px tall12. Use a PNG with a transparent background so the logo sits on any header colour.
For the favicon, Shopify calls 16 × 16 or 32 × 32 px ideal and reduces larger images to 32 × 324. Dawn and Horizon both request it at 32 × 32. Start from a simple square mark; a full wordmark is unreadable at that size. The favicon setting isn't available on the Starter plan4.
How Shopify resizes and serves images
Themes don't link to your original file. They call the image_url filter with a width, and Shopify generates that size on its CDN, up to 5,760 px8. Dawn's product gallery, for example, asks for twelve widths between 246 and 1,946 px:
{{
media.preview_image
| image_url: width: 1946
| image_tag:
class: image_class,
loading: lazy,
sizes: sizes,
widths: '246, 493, 600, 713, 823, 990, 1100, 1206, 1346, 1426, 1646, 1946'
}}
image_tag turns that into a srcset, and the sizes attribute tells the browser how wide the image will display9. The browser then downloads one width, not your 2,048 px original. Shopify's own theme guidance is that four to six widths are usually enough, and that without sizes the browser downloads the largest image10.
The format is negotiated too. Shopify "automatically detects which image formats are supported by the client (e.g. WebP, AVIF, etc.)" and picks one per request8. You don't need to upload WebP to get WebP. The full picture, including when to force a format, is in WebP, AVIF and Shopify's image pipeline.
So a large source doesn't slow the page. What slows it is a theme that requests too wide an image or leaves out sizes, and a hero image that loads late. If your homepage banner is the slowest thing on the page, the LCP guide covers preloading and fetchpriority.
Which format to upload
Shopify's own pages point different ways. Product media names PNG as "the best file type for most product images", followed by JPEG1. "Uploading images" says to use JPEG for product images and slideshows2, and the blog help recommends JPEG for post images7. Because Shopify re-encodes on delivery, the upload format mostly affects the upload itself. Our rule: JPEG at high quality for photos, PNG for logos, graphics and anything that needs transparency. A photo saved as PNG is usually several times the size of the same photo as a high-quality JPEG, which matters once you're near the 20 MB limit.
Alt text and file names
Name files before you upload them. Google says the file name gives it "very light clues" about the image, and its own example prefers my-new-black-kitten.jpg to IMG00023.JPG13. For a product that means something like linen-shirt-navy-front.jpg. The resizer names its output from your original file plus the new size, so rename first. Alt text matters more: describe what the photo shows, and don't stuff keywords into it, which Google says "may cause your site to be seen as spam"13. The Shopify side of both is in alt text and image file naming.
FAQ
What size should Shopify product images be?
2,048 × 2,048 px square, which Shopify says usually displays best. Use the same ratio for every product. If your theme uses portrait cards, 2,048 × 2,560 (4:5) works instead.
What is the Shopify banner size?
3,840 px wide covers the largest width Dawn and Horizon request. The height depends on the section's height setting. For no cropping, set the banner to "Adapt to first image" and upload the ratio you want, such as 3,840 × 1,280 for 3:1 or 3,840 × 2,160 for 16:9.
What size is a Shopify logo?
In Dawn the logo displays at up to 300 px wide, so upload it 600 px wide or wider. In Horizon it displays at up to 100 px tall, so upload it 300 px tall or taller. A transparent PNG works on any header colour.
What size is the Shopify favicon?
32 × 32 px. Shopify reduces larger images to 32 × 32. It isn't available on the Starter plan.
Why was my image rejected?
It's probably over 20 MB or over 20 MP (some Shopify pages allow 25 MP for product images). Use the checker above, then the resizer's "Shrink under the 20 MP limit" preset, which fits the image inside 4,000 × 4,000.
Why does my banner look cropped or blurry?
Cropped: the section has a fixed height and fills it with your image, so the edges go. Use "Adapt to first image" or a focal point. Blurry: the source is smaller than what the theme requests for large screens. Upload 3,840 px wide.
Does Shopify compress my images?
Not on upload. Shopify says images "aren't compressed when you upload them to the Shopify admin" and may be compressed when served through the theme. It also picks WebP or AVIF automatically for browsers that support them.
Do I need separate mobile images?
Usually not. The theme serves smaller widths of the same file to phones. Horizon's hero section can take a separate mobile image if you want a different crop; Dawn's banner uses the same image.