Why Aren't WooCommerce Product Images Displaying?

Why This Happens

WordPress generates multiple cropped/resized versions of every uploaded image based on the dimensions the active theme and plugins register, and switching themes (or updating one that changes its image size definitions) doesn't automatically regenerate existing images for the new sizes — they'll only exist correctly for images uploaded after the change unless explicitly regenerated. A site migration is a separate, common cause, since absolute file paths hardcoded somewhere (rather than relative or dynamically generated) can point to a domain or location that no longer matches.

Common Causes

  • Missing regenerated thumbnail sizes after a theme change — a regenerate-thumbnails plugin run once after any theme switch resolves this for existing images.
  • Broken absolute file paths after a domain change or site migration, where the old domain or file structure is still referenced somewhere in the database.
  • A lazy-loading plugin or script conflict, where images fail to trigger their load event correctly, especially in combination with a specific theme or page builder's own lazy-loading implementation running simultaneously.
  • A CDN misconfiguration, if one is in use, serving broken or outdated image references.
  • File permission issues on the server preventing images from being read correctly, less common but possible after a migration or hosting change.

How to Diagnose and Fix It

  1. Check the browser console/network tab for the specific broken image URLs to identify the pattern (wrong domain, missing file, wrong size).
  2. Run a thumbnail regeneration plugin if the issue started after a theme change.
  3. Search the database for old domain references if the issue started after a migration, using a proper search-and-replace tool rather than manual editing.
  4. Temporarily disable lazy-loading to test whether that's the specific cause.

Reading the browser's evidence

  1. Inspect the missing image's address. If it points to the old domain, the database still holds old references. If it has a size suffix such as -300x300 and returns a 404, that size was never generated. If the address looks right but returns 403, it is a file-permissions problem.
  2. Check the files exist. Look in wp-content/uploads for the year and month folders. After a migration, missing media files return a 404 for the original image too.
  3. Regenerate thumbnails when sizes are missing, with a regeneration plugin or WP-CLI's wp media regenerate.
  4. Rule out optimisation tools. Temporarily disable lazy-loading, image-optimisation and CDN-rewriting plugins to see whether the images then appear.

Visible in the Media Library but not on the product

Confirm the image is actually set as the product image or in the gallery, and test the product page with a default theme. A theme template that doesn't output the product image can look exactly like a broken image problem.

Need product images fixed properly after a migration or redesign? See WooCommerce fixes.

Available for new projects

NEXT STEP

Rather have it fixed than keep reading?

Based in Dhaka, Bangladesh — serving clients worldwide. Tell me what's happening and you'll have a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered