{"id":657,"date":"2023-05-24T20:32:57","date_gmt":"2023-05-24T17:32:57","guid":{"rendered":"https:\/\/presta.site\/blog\/?p=657"},"modified":"2026-07-22T08:29:13","modified_gmt":"2026-07-22T05:29:13","slug":"what-to-do-if-images-are-not-displaying-in-your-prestashop-store","status":"publish","type":"post","link":"https:\/\/presta.site\/blog\/en\/what-to-do-if-images-are-not-displaying-in-your-prestashop-store\/","title":{"rendered":"PrestaShop Images Not Displaying: Easy Fixes for 10 Common Causes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">When <strong>PrestaShop images not displaying<\/strong> on product pages, categories, or the home page, shoppers see broken icons instead of your catalog. The files are usually still on the server &#8211; PrestaShop just cannot serve the right path, size, or rewrite rule. This guide walks through a quick diagnose step, how images are stored, common causes, and the fixes that clear most cases without a full reinstall.<\/p>\n\n\n<!--more-->\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"516\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_3-1-1024x516.png\" alt=\"PrestaShop images not displaying - product thumbnails missing on the storefront\" class=\"wp-image-666\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_3-1-1024x516.png 1024w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_3-1-300x151.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_3-1-768x387.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_3-1.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Diagnose first (two minutes)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before you touch permissions or regenerate everything, pin down <em>how<\/em> PrestaShop images not displaying actually fails in the browser:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Open the image URL alone<\/strong> &#8211; right-click a broken image \u2192 Open image in new tab. Note the status: <strong>404<\/strong> (file or rewrite missing), <strong>403<\/strong> (permissions \/ hotlink rules), or the image loads while the page still looks broken (theme or lazy-load module).<\/li>\n<li><strong>Check the browser console<\/strong> &#8211; mixed-content warnings mean the page is <code class=\"codecolorer text default\"><span class=\"text\">https:\/\/<\/span><\/code> but the <code class=\"codecolorer text default\"><span class=\"text\">src<\/span><\/code> is still <code class=\"codecolorer text default\"><span class=\"text\">http:\/\/<\/span><\/code>.<\/li>\n<li><strong>Compare Back Office vs storefront<\/strong> &#8211; if the product form shows the photo but the FO is empty, thumbnails, Friendly URL rewrites, or the shop domain are the usual suspects. If both sides are empty, look for a missing file on disk or a database row without a matching file.<\/li>\n<li><strong>Toggle Friendly URL once<\/strong> &#8211; Shop Parameters \u2192 Traffic &amp; SEO. If images appear only with Friendly URL off, fix <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> \/ Nginx image rules before regenerating the whole catalog.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">PrestaShop keeps originals and generated sizes under the shop root <code class=\"codecolorer text default\"><span class=\"text\">\/img\/<\/span><\/code> folder. Knowing which directory holds which assets saves time when you are hunting a missing file:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code class=\"codecolorer text default\"><span class=\"text\">\/img\/p\/<\/span><\/code><\/strong> &#8211; product images. Uploads are split into nested folders (for example <code class=\"codecolorer text default\"><span class=\"text\">\/img\/p\/1\/2\/12.jpg<\/span><\/code> for product ID 12). PrestaShop also builds thumbnail variants for listing grids, carts, and the product page.<\/li>\n<li><strong><code class=\"codecolorer text default\"><span class=\"text\">\/img\/c\/<\/span><\/code><\/strong> &#8211; category images, with their own thumbnail sizes.<\/li>\n<li><strong><code class=\"codecolorer text default\"><span class=\"text\">\/img\/cms\/<\/span><\/code><\/strong> &#8211; images used in CMS pages. These usually skip the product-style thumbnail pipeline, so regenerating product thumbnails will not repair a broken CMS media path.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If the storefront URL for an image 404s while the file exists on disk, look at permissions, <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> \/ Nginx rewrites, and thumbnail types before you re-upload every photo. Friendly URL problems often sit next to image path failures &#8211; see <a href=\"https:\/\/presta.site\/blog\/en\/solving-prestashop-seo-url-rewriting-problems\/\">solving PrestaShop SEO URL rewriting problems<\/a> when product links and media URLs break together.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common causes when PrestaShop images not displaying<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Wrong file permissions<\/strong> &#8211; the web server cannot read (or write) files under <code class=\"codecolorer text default\"><span class=\"text\">\/img\/<\/span><\/code>.<\/li>\n<li><strong>Broken or incomplete <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code><\/strong> &#8211; especially after a move, HTTPS switch, or manual edit.<\/li>\n<li><strong>Wrong shop domain, SSL domain, or base URI<\/strong> &#8211; after a migration, image URLs still point at the old host or folder.<\/li>\n<li><strong>Image type settings<\/strong> &#8211; missing or zero-size formats in Design \u2192 Image Settings.<\/li>\n<li><strong>Interrupted thumbnail regeneration<\/strong> &#8211; some sizes never finished writing.<\/li>\n<li><strong>Missing PHP image library<\/strong> &#8211; GD or Imagick not installed, so regeneration cannot create files.<\/li>\n<li><strong>Image-related modules<\/strong> &#8211; lazy load, CDN, watermark, or optimizer modules failing.<\/li>\n<li><strong>Stale cache<\/strong> &#8211; PrestaShop cache, a cache module, or the browser still serving old URLs.<\/li>\n<li><strong>Post-upgrade or filesystem mismatch<\/strong> &#8211; theme expects new image types, or legacy vs new <code class=\"codecolorer text default\"><span class=\"text\">\/img\/p\/<\/span><\/code> layout after an old-shop move.<\/li>\n<li><strong>Nginx rewrite gaps<\/strong> &#8211; Apache-style rules from PrestaShop do not apply; image routes need server config.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Mixed content after forcing HTTPS is another frequent culprit: the page loads over <code class=\"codecolorer text default\"><span class=\"text\">https:\/\/<\/span><\/code> while image tags still point at <code class=\"codecolorer text default\"><span class=\"text\">http:\/\/<\/span><\/code>, so modern browsers block them. Confirm shop and media URLs use HTTPS in Shop Parameters \u2192 Traffic &amp; SEO (and in any CDN module).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"269\" src=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_4-1024x269.png\" alt=\"PrestaShop Design Image Settings where you regenerate thumbnails\" class=\"wp-image-667\" srcset=\"https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_4-1024x269.png 1024w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_4-300x79.png 300w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_4-768x202.png 768w, https:\/\/presta.site\/blog\/wp-content\/uploads\/2023\/05\/Screenshot_4.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How to fix PrestaShop images not displaying<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Fix permissions on <code class=\"codecolorer text default\"><span class=\"text\">\/img\/<\/span><\/code><\/strong> &#8211; via FTP or the host file manager, directories are usually <strong>755<\/strong> and files <strong>644<\/strong>. Try <strong>775 \/ 664<\/strong> only if your host requires group write. Avoid <strong>777 \/ 666<\/strong> except as a short test, then lock permissions back down. The web user must also be able to <em>write<\/em> here or thumbnail regeneration will fail silently.<\/li>\n<li><strong>Correct the shop URL after a move<\/strong> &#8211; in Shop Parameters \u2192 Traffic &amp; SEO, set <strong>Shop domain<\/strong>, <strong>SSL domain<\/strong>, and <strong>Base URI<\/strong> to the live host (including the subdirectory if the shop is not at the domain root). Save so PrestaShop rewrites <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code>. Wrong domains are a top reason for PrestaShop images not displaying right after migration. If image <code class=\"codecolorer text default\"><span class=\"text\">src<\/span><\/code> attributes still show the old host, clear cache and check CDN settings next.<\/li>\n<li><strong>Regenerate <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code><\/strong> &#8211; on the same SEO &amp; URLs screen, save Friendly URL settings so the root <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> is rebuilt. Re-check a product image URL in a private browser window.<\/li>\n<li><strong>Confirm GD or Imagick<\/strong> &#8211; PrestaShop needs a PHP image extension to resize uploads. On the server, check that <a href=\"https:\/\/www.php.net\/manual\/en\/book.image.php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP GD<\/a> (or Imagick) is enabled for the same PHP version the shop uses. Without it, Design \u2192 Image Settings may look fine while no new thumbnails appear on disk.<\/li>\n<li><strong>Review image types and regenerate thumbnails<\/strong> &#8211; go to Design \u2192 Image Settings. Confirm each format used by your theme has sensible width\/height. Run <strong>Regenerate thumbnails<\/strong>. Official upgrade notes also call this out when images disappear after a version jump &#8211; see the PrestaShop <a href=\"https:\/\/devdocs.prestashop-project.org\/9\/basics\/keeping-up-to-date\/update\/post-update-checklist\/\" target=\"_blank\" rel=\"noopener noreferrer\">post-update checklist<\/a>. This step alone fixes a large share of \u201cbroken thumbnail\u201d cases.<\/li>\n<li><strong>Resume a stuck regeneration<\/strong> &#8211; if the progress bar stopped mid-run, submit the form again with <strong>Erase previous images<\/strong> unchecked so PrestaShop continues instead of wiping finished sizes and starting from zero. On large catalogs, regenerate one image type at a time so a timeout does not hide where it failed.<\/li>\n<li><strong>Legacy vs new product image paths<\/strong> &#8211; shops moved from very old PrestaShop versions sometimes still store files in a flat layout while the current shop expects nested folders under <code class=\"codecolorer text default\"><span class=\"text\">\/img\/p\/<\/span><\/code> (or the reverse). In Image Settings, use the option to move images to the new filesystem when it matches your data &#8211; then regenerate. Do not flip that toggle blindly on a live shop without a backup.<\/li>\n<li><strong>Isolate image modules<\/strong> &#8211; disable recent lazy-load, WebP, CDN, or watermark modules, clear cache, and retest. Re-enable one at a time to find the offender.<\/li>\n<li><strong>Clear caches<\/strong> &#8211; Advanced Parameters \u2192 Performance \u2192 clear cache. Flush any cache\/CDN module. Hard-refresh or clear the browser cache so you are not looking at an old broken URL.<\/li>\n<li><strong>After an upgrade<\/strong> &#8211; clear cache, regenerate thumbnails, and confirm the active theme\u2019s required image types still exist in Image Settings. A theme update that adds a new format will show empty slots until that type is generated.<\/li>\n<li><strong>Nginx<\/strong> &#8211; PrestaShop cannot write Nginx config for you. Ask the host (or your sysadmin) to map image and legacy rewrite rules correctly; compare against a known-good PrestaShop Nginx snippet for your major version.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If the Back Office itself whitescreens while you work through these steps, treat that as a separate PHP\/error-log problem first &#8211; start with the <a href=\"https:\/\/presta.site\/blog\/en\/white-screen-of-death-in-prestashop-a-step-by-step-guide\/\">white screen of death troubleshooting guide<\/a>, then return to image regeneration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Still seeing PrestaShop images not displaying after permissions, domain\/URL checks, rewrites, regeneration, modules, and cache? Restore <code class=\"codecolorer text default\"><span class=\"text\">\/img\/<\/span><\/code> (and matching database image rows if needed) from a known-good <strong>backup<\/strong>. Re-uploading hundreds of products by hand is slower and easy to mismatch against combination images.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Keep images working after the fix<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Back up regularly<\/strong> &#8211; include the full <code class=\"codecolorer text default\"><span class=\"text\">\/img\/<\/span><\/code> tree and the database, not only PHP files.<\/li>\n<li><strong>Test on staging<\/strong> &#8211; try theme switches, image optimizer modules, and major upgrades on a copy before the live shop.<\/li>\n<li><strong>Spot-check after big changes<\/strong> &#8211; after each upgrade, migration, or CDN change, open one category listing and one product page on mobile and desktop. Confirm thumbnails and zoom images load so you catch PrestaShop images not displaying before customers do.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Most \u201cPrestaShop images not displaying\u201d tickets end with a correct shop domain, readable <code class=\"codecolorer text default\"><span class=\"text\">\/img\/<\/span><\/code> permissions, a fresh <code class=\"codecolorer text default\"><span class=\"text\">.htaccess<\/span><\/code> (or correct Nginx map), working GD\/Imagick, and a completed thumbnail regeneration with erase disabled on retry. Work those before you rebuild the catalog.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>When PrestaShop images not displaying, diagnose the image URL first, then fix domain, permissions, GD\/Imagick, rewrites, and thumbnail regeneration.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[],"class_list":["post-657","post","type-post","status-publish","format-standard","hentry","category-development"],"_links":{"self":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/comments?post=657"}],"version-history":[{"count":17,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/657\/revisions"}],"predecessor-version":[{"id":1923,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/posts\/657\/revisions\/1923"}],"wp:attachment":[{"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/media?parent=657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/categories?post=657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/presta.site\/blog\/wp-json\/wp\/v2\/tags?post=657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}