PerformanceApril 28, 20269 min read

Image CDNs for Ecommerce: When You Actually Need One (and Which to Pick)

Cloudinary, imgix, Bunny.net, Shopify's built-in CDN — when does an image CDN move the needle, and which one fits an ecommerce store best? A practical comparison.

StoreVitals Team

Images are 60-70% of an average ecommerce page's bytes. Hero images, product photos, lifestyle shots, swatches, badges, related-product thumbnails — they pile up. A poorly served catalog of 50,000 product images can become the single biggest drag on your site speed and the biggest expense on your origin bandwidth bill.

This is what an image CDN solves. But not every store needs one, and picking the wrong one creates more problems than it solves.

What an Image CDN Actually Does

An image CDN sits between your origin server and your users. When a browser requests https://cdn.yourstore.com/products/hero.jpg?w=800, the CDN:

  1. Checks if it has the 800px-wide variant cached. If so, serves it immediately.
  2. If not, fetches the original from origin, resizes to 800px, optimizes, caches, and serves.
  3. On subsequent requests, serves from edge caches geographically close to the user.

The optimization typically includes:

  • Format conversion (JPEG → WebP for Chrome, AVIF for newer browsers)
  • Compression with optimal quality settings
  • Resizing to exact display dimensions
  • Stripping metadata
  • Optional transformations (cropping, format conversion, watermarking)

When You Don't Need One

Stores that should not add a separate image CDN:

  • Shopify stores under 1,000 products: Shopify's built-in CDN with their _x, _x@2x sizing is competitive with Cloudinary for most use cases.
  • Stores already on Cloudflare with Polish enabled: Cloudflare Polish handles WebP conversion and lossless compression. Add Mirage for connection-aware sizing. This covers most needs.
  • Stores with under 500 images and good CDN already in front: The optimization opportunity is limited.

When You Do Need One

The case for a dedicated image CDN strengthens when:

  • You have 5,000+ product images served from origin
  • You're paying significant origin bandwidth costs
  • Your product photographers upload high-resolution masters and you need on-the-fly variants
  • You need advanced transformations (background removal, smart cropping, art direction)
  • You have a headless commerce stack where image optimization isn't built in
  • You want format conversion (AVIF) without rebuilding your image pipeline

The Major Image CDN Options

Cloudinary

Most feature-rich. Strong AI-based transformations (background removal, art direction, smart crop on subject). Generous free tier (25 credits/mo, ~25k transformations or ~25GB bandwidth). Pricing scales aggressively past free tier — large stores can pay $500-$2000+/mo.

Best for stores that need transformation features beyond basic resize/optimize.

imgix

Performance-focused, less feature breadth than Cloudinary. Strong URL-based API. Pricing more linear ($10/mo for 1,000 origin images, $0.08/GB bandwidth). Predictable scaling.

Best for stores with image-heavy catalogs that want predictable costs.

Bunny.net Optimizer

Cheapest of the major options ($9.50/mo flat). Good performance, simpler feature set. WebP/AVIF conversion, basic resizing. No advanced AI features.

Best for cost-conscious stores that need optimization but not transformation.

Cloudflare Images

$5/mo for 100k images stored, $1 per million requests. Tightly integrated with Cloudflare's existing CDN. Polish/Mirage features available alongside.

Best for stores already deep in Cloudflare's ecosystem.

Shopify's Native CDN

Built-in for Shopify stores. Free. Handles WebP serving and responsive sizing via URL parameters. Limited transformation options (no AI features, no on-the-fly cropping).

Best for Shopify stores that don't need advanced features.

Real-World Performance Impact

Switching a store with 10,000 product images from origin-served JPEGs to a properly configured image CDN typically yields:

  • 30-50% reduction in image bytes per page (WebP/AVIF conversion + responsive sizing)
  • 200-500ms improvement in Largest Contentful Paint (LCP)
  • Significant origin bandwidth cost reduction
  • Better mobile experience due to smaller per-device variants

The LCP improvement alone is meaningful — Google uses LCP as a ranking signal, and improving it from "needs improvement" (2.5-4s) to "good" (under 2.5s) is often the difference between page 2 and page 1.

Common Pitfalls When Switching

  1. Not setting up cache headers correctly: Without proper Cache-Control and immutable URLs, you'll re-fetch from origin too often.
  2. Forgetting to update your sitemap: Image sitemaps should reference the CDN URLs, not origin.
  3. Hotlinking from origin during transition: Set up the CDN, verify it works, then update your store's image URLs in one batch — not gradually.
  4. Not preloading hero images: Even with a CDN, hero images benefit from <link rel="preload"> tags.
  5. Skipping responsive images: The CDN supports it; use srcset attributes to actually deliver appropriately-sized variants per device.

What StoreVitals Checks

Our crawler flags large images (over 200KB), images served without modern formats, and pages where image bytes dominate the total page weight. The Page Weight Analyzer shows the breakdown for any URL. If images are 70%+ of your page weight, an image CDN is probably worth investigating.

image CDNperformanceCloudinaryimgixCore Web Vitals

See these issues on your store?

Run a free scan and find out in seconds.

Run Free Scan