Product images are the backbone of e-commerce. Shoppers cannot touch, smell or try your products, so your images do all of that work. But there is a tension every store owner faces: high-quality images are large, large images slow down pages, and slow pages cost sales.

The good news is that the trade-off is far softer than it looks. Most stores are not choosing between quality and speed. They are serving a 3000 px image into an 800 px slot and losing both.

40-70%smaller images, faster pagesOptimized images are one of the biggest page-speed wins.

Why image optimization is critical for online stores

The often-quoted figure that a one-second delay costs seven percent of conversions comes from Aberdeen Group research published in 2008. It is old, and worth treating as a directional claim rather than a number to plug into a spreadsheet.

The better-evidenced modern version comes from Deloitte's Milliseconds Make Millions study in 2020, which found that a 0.1 second improvement in load time was associated with an 8.4 percent lift in retail conversions. Either way the direction is the same and it is not controversial: on a product page, images are almost all of the weight, so images are almost all of the opportunity.

The right image dimensions for product photos

Serving images at the correct dimensions is the single biggest optimization win. Never upload a 4000x4000 pixel image when it will display at 800x800.

  • Product thumbnail (grid or listing page): 400x400 to 600x600 px
  • Product main image (detail page): 800x800 to 1200x1200 px
  • Zoom view: 1600x1600 to 2000x2000 px, loaded only on interaction
  • Banner or hero images: 1440x600 px wide, or 800x800 square

Resize to the maximum size the image will actually be displayed at, at up to twice that for high-density screens. This alone commonly reduces file sizes by 60 to 80 percent. Our image resizer does it in your browser without uploading the file.

Choosing the right format for product images

  • JPEG for complex product photos on coloured or white backgrounds. Quality 75 to 85 is the useful range.
  • PNG only when you genuinely need transparency, such as a product that will be layered over a background. PNGs of photographs are always larger than JPEGs with no visible benefit.
  • WebP alongside JPEG via the <picture> element, for roughly 25 to 35 percent savings on modern browsers.
  • AVIF for the largest savings on photographic products, at the cost of slower encoding.

Compression settings that balance quality and speed

Image typeJPEG qualityTarget file size
Thumbnail (400 px)70-7515-25 KB
Detail page (1000 px)78-8260-100 KB
Zoom image (2000 px)80-85150-250 KB

Always compare at 100 percent zoom after compressing. If you can see artefacts, raise the quality by five points. Most product photography looks excellent at JPEG 80. Watch fabric texture, hair, and gradients on packaging, which are where compression shows first. Our image compressor lets you hit a target size and see the result immediately.

Jewellery, textiles and anything with fine detail are the exception. These are the categories where over-compression genuinely costs you returns and complaints. Test those with a real product photo before applying a store-wide setting.

The product page image that decides your LCP

On a product detail page, the main product image is almost always the Largest Contentful Paint element. It is the thing Google times, and the thing the shopper is waiting for. Three rules apply to it and to nothing else on the page.

  • Never lazy-load it. Adding loading="lazy" to the main product image is the most common self-inflicted speed problem in e-commerce themes.
  • Add fetchpriority="high" so the browser fetches it ahead of the rest of the gallery.
  • Do not hide it inside a JavaScript carousel that initialises after page load. If the browser cannot find the image in the initial HTML, it cannot start downloading it early.
<img src="product-1000.jpg" alt="..." fetchpriority="high" width="1000" height="1000">

A typical product page ships eight gallery images and eight zoom images at full resolution, and the shopper looks at one. Two fixes, both straightforward:

  • Lazy-load every gallery thumbnail except the first. They are below the fold or behind a click.
  • Load zoom images on interaction only. The high-resolution file should be requested when the shopper hovers or taps to zoom, not on page load. A 2000 px zoom image per gallery slot, loaded upfront, can quadruple the weight of the page for a feature most visitors never use.

Category pages are where the weight really is

Product pages get the attention, but a category page showing 48 products loads 48 images, and it is usually the page your ads land on.

  • Serve genuine thumbnails, not the full-size product image scaled down in CSS. This is extremely common and it means a 48-product grid downloads several megabytes to display postage stamps.
  • Lazy-load everything below the first row.
  • Keep thumbnails at 15 to 25 KB. Across 48 products that is roughly 1 MB, which is a reasonable budget for a grid.
  • Set explicit dimensions so the grid does not reflow as images arrive, which on a listing page is what makes shoppers tap the wrong product.

Colour variants and swatches

A product in nine colourways often preloads all nine full-size images so the swatch switch feels instant. That is nine times the weight for a choice most shoppers never make. Load the selected variant, and fetch the others on demand. If you want the swap to feel immediate, preload only the next most likely variant, not the entire set.

Alt text for product images

Every product image needs descriptive alt text. It helps Google understand what your images depict, which matters because image search traffic for products is real, and it makes your store usable for shoppers using screen readers.

  • Bad: alt="shoe"
  • Good: alt="Nike Air Max 270 men's running shoe in blue and white"

Include brand, product name and colour. Do not stuff the SKU in unless customers actually search by it. For a gallery of the same product, describe what each shot shows, such as the sole detail or the rear view, rather than repeating the same string eight times.

Structured data for product images

Product markup feeds Google Shopping and rich results, and the image field is required. Supply the highest-resolution version you have, use an absolute URL, and make sure it is crawlable rather than blocked in robots.txt.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Nike Air Max 270",
  "image": [
    "https://example.com/photo-1x1.jpg",
    "https://example.com/photo-4x3.jpg",
    "https://example.com/photo-16x9.jpg"
  ]
}

Providing several aspect ratios lets Google pick the one that fits the surface it is rendering.

What your platform already does

Before installing anything, find out what you are already paying for.

PlatformHandled for youLeft to you
ShopifyServes images through its CDN and negotiates WebP automaticallyUpload size discipline, lazy-loading choices, theme markup quality
WooCommerceWordPress thumbnail generation onlyCompression, format conversion and delivery, all of it
BigCommerceCDN with automatic resizing and format negotiationSource image quality and gallery behaviour

If you are on WooCommerce, this is the gap worth closing, because nothing in the stack compresses anything by default. An optimisation plugin such as ShortPixel or Imagify handles compression and WebP conversion on upload and can bulk-process an existing catalogue. Our WordPress image optimization guide covers the setup, including the delivery step that people usually miss.

If you are on Shopify or BigCommerce, most of that is already done and a plugin adds little. Your wins are upload discipline and theme markup instead.

Image CDN: serve from everywhere, fast

A CDN stores copies of your images on servers around the world, so a shopper in Mumbai is served from Mumbai rather than from a rack in Ohio. On a first visit, latency often matters more than another compression pass. Image-aware CDNs such as Bunny.net and Cloudflare go further and convert per request, delivering AVIF to browsers that support it and JPEG to those that do not, from a single original.

Check whether it worked

  1. Test a product page and a category page separately. They fail in different ways.
  2. In DevTools, Network tab, filter to Img and hard-reload. Check the Type column really says webp or avif.
  3. Compare LCP before and after in PageSpeed Insights, and prefer the field data section over the lab score where you have enough traffic for it.
  4. Watch add-to-cart rate rather than bounce rate. Speed work shows up in completed actions before it shows up anywhere else.

The short checklist

  • Resize to display size before uploading. Biggest win, costs nothing.
  • Main product image: no lazy loading, fetchpriority="high", present in the initial HTML.
  • Gallery and zoom images: lazy, and zoom on interaction only.
  • Category thumbnails: real thumbnails at 15 to 25 KB, not scaled-down originals.
  • Variants: load the selected one, not all nine.
  • Width and height on everything, so nothing reflows.
  • Descriptive alt text with brand, product and colour.
  • Verify delivery in the Network tab, not in a plugin dashboard.