Product photos are usually the single heaviest thing on a store’s page — heavier than the theme, the scripts, and the fonts put together. A 12-megapixel photo straight off a phone lands in the megabytes, not the kilobytes. Multiply that by six angles on a product page and a grid…

Product photos are usually the single heaviest thing on a store’s page — heavier than the theme, the scripts, and the fonts put together. A 12-megapixel photo straight off a phone lands in the megabytes, not the kilobytes. Multiply that by six angles on a product page and a grid of thumbnails on the category page above it, and a store can end up moving far more data than the shopper ever sees drawn on screen. The fix isn’t fewer photos or worse ones. It’s photos sized and formatted for what a browser needs, not for what a camera happens to produce.

None of this requires a redesign or a new platform. Three changes — dimensions, format, and how the file gets delivered — do almost all of the work, and the order matters: doing them in the wrong order means spending an afternoon on the setting that saves the least.

A worker feeding a thick glowing picture panel into a press and the same picture coming out thin and just as sharp

Where the Weight Actually Comes From

Most bloated stores share the same habit: the original upload is much bigger than the space it’s shown in. A camera photo at 4000px wide, displayed in a 600px product-page slot, is carrying more than 40 times the pixel data the page will ever draw on screen — a 12-megapixel original against a slot that shows roughly 0.3 megapixels. The browser still has to download the whole file before it can shrink it.

WooCommerce, for example, registers three sizes for every product photo you upload — a 300px square thumbnail for grid pages, a 600px image for the single product page, and a 100×100 gallery thumbnail — and generates them automatically from whatever you upload. If the original file is a clean, reasonably sized image to begin with, those generated sizes stay light. If the original is a 12-megapixel camera file, some themes and blocks still request it directly, and the automatic resizing doesn’t save you. The safest habit: upload close to the largest size your design actually shows, not the largest size your camera can produce.

Format Beats the Compression Slider

Most people think “optimizing an image” means dragging a quality slider from 90% to 60%. Format choice moves the needle further. WebP typically runs 25–35% smaller than a comparable JPEG or PNG at the same visual quality, according to Google’s web.dev guidance, which cites that range from Facebook’s own rollout — and every major browser sold today decodes it natively, so there’s no fallback logic to maintain anymore. AVIF can shrink files further still, but it takes longer to encode and its browser support trails WebP by a step, so it’s better suited to hero images than to a catalog of thousands of SKUs where encoding time adds up.

FormatBest forTrade-off
JPEGPhotos, wide legacy supportLarger than WebP at the same quality
PNGTransparency, flat graphicsMuch larger for photos
WebPDefault for most product photosRare edge-case browser gaps
AVIFHero images, low-traffic pagesSlower to encode at scale
SVGLogos, iconsNot usable for photos

For manual work on a handful of images, Squoosh — a free tool built by Google’s Chrome team — lets you drag a file in, compare the compressed version side by side with the original, and export in WebP or AVIF without installing anything. For a catalog of hundreds or thousands of SKUs, that’s a job for a plugin or a build step, not a browser tab.

Why This Isn’t Just Housekeeping

Image weight shows up directly in Largest Contentful Paint, one of Google’s Core Web Vitals. On a product page, the LCP element is almost always the main product photo, and Google’s own documentation sets 2.5 seconds as the threshold for a “good” score — measured on real visitors, not a lab test. An unoptimized hero image is the single most common reason stores miss that number, and Core Web Vitals are part of the page experience signals Google uses in ranking.

The user-behavior side of this is older but hasn’t reversed. In a 2016 analysis of roughly 3,700 mobile sites, Google’s own analytics data found just over half of visits were abandoned once a page passed three seconds to load. That’s dated and it wasn’t eCommerce-specific — but pages have only gotten heavier since, not lighter, so the pressure it describes hasn’t gone away. What a shopper decides to keep looking at in the first three seconds depends on whether anything has actually rendered by then.

Sizing and Delivery, Without Extra Plugins

Two things do most of the remaining work, and neither requires custom code anymore:

  • Responsive images (srcset) let the browser choose which size to download based on the visitor’s screen — a phone doesn’t pull the same file as a desktop monitor. Most current WordPress and Shopify themes generate this automatically once the underlying images exist at multiple sizes.
  • Native lazy loading (loading="lazy") delays images below the fold until a visitor scrolls to them, which is now built into browsers rather than something a plugin has to fake.

A CDN handles the last piece: serving the same optimized file from a server physically closer to the shopper. Every Shopify plan includes CDN delivery — the storefront CDN is backed by Cloudflare — while WooCommerce stores typically sit behind Cloudflare, BunnyCDN or a similar provider you pick yourself. The platform you’re on has already made some of these decisions for you — we cover more of that trade-off in our comparison of WooCommerce and Shopify for online stores.

Chart of three image fixes in order of payoff: size it for the slot, change the format, let the browser choose

What Tends to Break the Fix Later

Image optimization isn’t a setting you turn on once. The two moments it quietly reverses:

  • A platform or theme migration. Old images get re-imported at their original camera resolution because the migration tool copies files, not settings.
  • A new team member uploading photos. Without a documented size and format, the next batch of product shots goes up exactly as the camera exported them.

Checking a handful of recently added product pages after either event catches most of the damage before it spreads across the catalog. A migration is also the point where this stops being a plugin question: if a move to a new platform or theme has already re-imported a whole catalog at camera resolution, sorting that out properly is part of an e-commerce rebuild, not something a compression plugin fixes after the fact.

Sizing images at upload, rather than fixing them page by page later, is the same “when A happens, do B” pattern behind any process worth automating — and whether it’s worth wiring up depends on how often new photos actually arrive.

If your store’s image setup needs more than a plugin — a genuine rebuild of how photos are sized, delivered, and generated at upload — that’s part of what we handle in e-commerce website development, where our standard build is quoted as a fixed price up front rather than by the hour. And if you’re not sure whether the fix is a setting, a new host, or a bigger rebuild, that’s a fair question to bring to us directly — get in touch.

Related posts

A worker before a tall rack of dozens of small closed doors, exactly six opened and glowing, an hourglass half run through beside him

How to Track Competitor Prices (And Where It Breaks)

Reading Time: 6:11 min

Tracking competitor prices means picking a set of products, checking what other sellers charge for them on some kind of schedule, and noticing when a number moves. That’s the whole…

View post
One glowing price tag on a pedestal splitting into two rails: one ending at a lens that looks, one at a press that stamps

Price Monitoring vs. Repricing: Which One Do You Need?

Reading Time: 4:53 min

If you’re a brand and other people sell your product, you need a tool that watches prices you don’t set and tells you when one drops below the floor you…

View post
Three price tags of different sizes hanging at three different heights above a counter, crossed by one fixed rail

MAP vs. MSRP: What Each Price Actually Controls

Reading Time: 5:58 min

Three numbers get treated as if they were one price with three names: MSRP, MAP, and the price the customer actually pays. They aren’t. Each has a different owner, a…

View post

Get in touch, and we'll reveal possibilities you never knew existed for your website

Want to know more?

Contact us and we’ll tell you everything you need to know!

Or let's talk now
Your AI agent
Y
Your AI agent Chatting with Charlie
Hello! How can I help you today?