How to Diagnose and Solve the BlinkSpeed WebP Issue on Your WordPress Site

BlinkSpeed WebP Issue: Diagnose and Resolve WebP Problems Easily

Quick Answer

BlinkSpeed WebP images fail to load for six specific reasons – the free plan restricts WebP to the homepage only, the AI Optimisation process has not run or completed, the converted .webp files are missing from the wp-content/uploads/bs-webp/ folder on your server, the # BEGIN BSWEBP Apache rewrite block is absent from .htaccess, the lazy load JavaScript is blocked or conflicting with another plugin, or the image format is not eligible for conversion (GIF, SVG, ICO, or external images). Each cause has a direct, targeted fix that takes under five minutes to apply.

What Is the BlinkSpeed WebP Issue?

The BlinkSpeed WebP issue is when images on your WordPress site are expected to load in WebP format after enabling BlinkSpeed’s image optimisation settings, but they continue to display as standard JPG or PNG files – or worse, show as blank boxes that never fill in.

WebP is a modern image format that reduces file size by 25-50% compared to JPEG and PNG with no visible quality loss. BlinkSpeed converts your images to WebP through its cloud API and delivers them automatically – but the system has several moving parts, and any one of them being off creates an image optimization problem that is easy to fix once you know where to look.

This WordPress image troubleshooting guide covers every cause, how to identify which one applies to your site, and the exact steps to fix each one.

How BlinkSpeed Delivers WebP Images

Understanding how BlinkSpeed serves WebP makes diagnosing the problem much faster.

BlinkSpeed uses two delivery methods working side by side:

Method 1 – PHP Rewriting: 

When building a page, BlinkSpeed scans every image tag. For each JPG or PNG image hosted on your own server, it checks whether a WebP version already exists in the wp-content/uploads/bs-webp/ folder on disk. If the file is there, the image URL in the HTML is rewritten to point to the .webp version. If the file is not there, the original URL stays, and that image is added to the next conversion queue.

Method 2 – Server-Level Apache Rewriting: 

BlinkSpeed also writes a block called # BEGIN BSWEBP into your .htaccess file. This block tells Apache to transparently serve the WebP version of any JPG or PNG request – as long as the visitor’s browser supports WebP and the .webp file exists on the server. This runs at the server level, before PHP, which means even images whose HTML has not been PHP-rewritten can still be served as WebP.

Both methods work together. When either one breaks, you see the BlinkSpeed WebP issue. Knowing which layer failed tells you exactly which fix to apply.

6 Causes of the BlinkSpeed WebP Issue and Their Fixes

Cause 1 – Free Plan Limits WebP to the Homepage Only

Who sees this: Anyone using BlinkSpeed without an active premium license key.

This is by far the most common image optimization problem BlinkSpeed users encounter after first setup. On the free version, BlinkSpeed assigns a demo license. 

When this demo license is active, the plugin checks whether the current page is the homepage before running its full optimisation pipeline. If the page is anything other than the homepage – a blog post, product page, landing page, or any inner URL – the pipeline exits before reaching the WebP conversion code. No WebP images are served. No error is shown. The images simply stay in their original JPG or PNG format.

How to confirm: Open any inner page in Chrome, press F12, go to the Network tab, filter by Img, and reload. If image files end in .jpg or .png while your homepage images end in .webp, the free plan limit is your answer.

WebP conversion fix: Activate a premium license key under BlinkSpeed → General Settings → License Key. Once active, go to BlinkSpeed → Optimize with AI, click Start Optimization, and let the full-site conversion run. After it completes, clear the BlinkSpeed cache and test your inner pages.

Cause 2 – The AI Optimisation Process Has Not Run or Finished

Who sees this: Sites where the WebP setting is on but the conversion has never been triggered, or was interrupted.

Enabling Convert to WebP under BlinkSpeed → Image Optimization tells BlinkSpeed what to do – but it does not do it immediately. The actual WebP conversion happens through the Optimize with AI process. This crawls your site’s URLs, collects all image URLs on each page, sends them to BlinkSpeed’s cloud conversion service, and saves the returned WebP files into the wp-content/uploads/bs-webp/ folder on your server.

Until a page goes through this queue, there are no WebP files for its images. BlinkSpeed checks the bs-webp/ folder when processing each page’s HTML, finds nothing, keeps the original image URLs, and adds those images to the next scheduled conversion batch.

How to confirm: Go to BlinkSpeed → Optimize with AI. If you see pages listed as Pending or In Progress, or you have never opened this tab before, this is your cause.

Fix: Click Start Optimization and allow it to run to completion. At 5 pages per minute, a 200-page site takes around 40 minutes. Pages already marked complete will serve WebP during this time; pages not yet processed will serve the original format until their turn. After the process finishes, clear the BlinkSpeed cache and test.

Cause 3 – WebP Files Are Missing from the bs-webp/ Folder

Who sees this: Sites where WebP was working before but has recently stopped.

Even if the AI Optimisation previously completed successfully, the converted WebP files can disappear. Common reasons include a cleanup plugin that cleared the wp-content/uploads/bs-webp/ folder, a site migration where that folder was not transferred, a manual action in the hosting file manager, or a cloud API timeout during the original conversion that silently saved zero files.

BlinkSpeed checks for the physical .webp file on disk before rewriting any image URL. If the file does not exist, it falls back to the original format – quietly, with no error in the WordPress admin.

How to confirm: Log in via FTP or your hosting file manager and open wp-content/uploads/bs-webp/. If this folder is empty or does not exist, the files are gone.

Fix: Go to BlinkSpeed → Optimize with AI, click Reset to clear the processing history for all URLs, then click Start Optimization to rebuild the entire WebP library from scratch. The bs-webp/ folder is recreated automatically as files are received from the cloud API.

Cause 4 – The # BEGIN BSWEBP Block Is Missing from .htaccess

Who sees this: Sites where WebP works inconsistently, or where the admin shows a specific error notice.

BlinkSpeed writes a block into your root .htaccess file that handles WebP delivery at the Apache server level. The block contains mod_rewrite rules that intercept JPG and PNG requests and substitute the WebP version when the browser supports it. If this block is missing – because another plugin overwrote .htaccess, a backup restore removed it, or BlinkSpeed’s own validation test detected a server error when trying to write it – the server-level delivery layer stops working.

When the .htaccess validation fails, BlinkSpeed automatically reverts the WebP settings and shows this notice in your WordPress admin:

Server error: Unable to apply .htaccess webp rules to the site.

How to confirm: Open your root .htaccess file via FTP or cPanel File Manager and search for # BEGIN BSWEBP. If the block is absent, this is your cause.

Fix: Go to BlinkSpeed → General Settings and click Save without changing anything. This triggers BlinkSpeed to rewrite all its .htaccess blocks, including the BSWEBP block. If the error notice reappears after saving, your server may not have mod_rewrite or mod_headers enabled – contact your hosting provider to enable these Apache modules, or see the Nginx note in the FAQs.

Cause 5 – Blank Images: A Lazy Load Image Problem Disguised as a WebP Issue

Who sees this: Users reporting blank white or grey boxes where images should appear, with no loading or progress – even after scrolling.

This is the most important WordPress image troubleshooting distinction in the entire guide: blank boxes are a lazy load image problem, not a WebP delivery problem. They look similar from the outside but have completely different causes and fixes.

Here is what is happening: BlinkSpeed’s lazy loading replaces below-the-fold image src attributes with a tiny transparent placeholder and moves the real image URL to a data-src attribute, marking the element with data-class=”LazyLoad”. A small JavaScript file uses the browser’s built-in Intersection Observer to detect when an image enters the viewport and swaps the real URL back into src. If this JavaScript is not running correctly, images stay as blank placeholders indefinitely – the real image URL exists in the page source, but the browser never receives the signal to load it.

How to tell if your broken images issue is a lazy load problem or a WebP problem:

  1. Right-click a blank image → Inspect Element
  2. Look at the HTML for that image
    • src shows a tiny data placeholder AND a data-src attribute holds the real URL → lazy load image problem
    • src shows a real .jpg URL that returns a 404 error → broken image link, unrelated to lazy loading or WebP
    • src shows a real .jpg URL that returns a 200 but is not in WebP format → WebP conversion issue (see Causes 1–4)

Fix for the lazy load image problem: Open DevTools → Console tab and look for red JavaScript errors. Any uncaught error from another plugin can halt BlinkSpeed’s image loading script. There is also a specific circular conflict worth checking: if BlinkSpeed’s JavaScript optimisation system has delayed BlinkSpeed’s own image loader script (img-lazyload.js), the script that loads images is waiting for user interaction to run – but images will never appear unless that script runs first.

To fix this: go to BlinkSpeed → Exclusions → JS Exclusions → Exclude Javascript from Lazyload and add:

img-lazyload.js

with no modifier. This ensures the image loading script always executes immediately on page load, while the rest of the site’s scripts continue benefiting from the lazy load optimisation.

Cause 6 – The Image Type Is Not Eligible for WebP Conversion

Who sees this: Users noticing one specific image or type of image that never converts while everything else works fine.

BlinkSpeed only converts images that meet specific criteria. The following are always skipped:

Image Type Why It Is Skipped
GIF files Animated GIFs would lose animation – all GIFs are excluded
SVG files SVGs are vector graphics already optimised by nature – no conversion benefit
Favicons and ICO files Excluded by design
External images Images loaded from other domains or CDNs are detected and left untouched
Images excluded by filter hook Developers can programmatically exclude specific image paths

If a specific image falls into any of these categories and is not showing as WebP, this is not a broken images issue – it is expected behaviour.

Quick Diagnosis Table

Use this to match your specific symptom to the right cause and fix in under 60 seconds:

What You See Most Likely Cause What to Do
WebP on homepage, JPEG on inner pages Free plan homepage-only restriction Upgrade to premium → run AI Optimisation
No WebP anywhere, images load normally AI Optimisation not run or not finished Optimize with AI → Start Optimisation
WebP stopped working after previously working bs-webp/ folder was cleared or deleted Reset → re-run AI Optimisation
Admin shows “.htaccess webp rules” error # BEGIN BSWEBP block validation failed Re-save General Settings; check server modules
Blank boxes that never fill in Lazy load JS blocked or in circular conflict DevTools Console; exclude img-lazyload.js
One specific image never converts GIF, SVG, ICO, or external URL Expected behaviour – not a bug
WebP on desktop, original format on mobile Mobile WebP variant (-595xh.webp) not generated Re-run AI Optimisation after enabling Responsive Images

 

How to Verify WebP Is Working After Your Fix

Always confirm the fix worked before moving on. Here are two quick methods:

Chrome DevTools (most accurate):

  1. Press F12 → Network tab → filter by Img
  2. Hard-reload the page with Ctrl + Shift + R
  3. Click any image in the list
  4. Look at Response Headers

content-type: image/webp – WebP is being served correctly ❌ content-type: image/jpeg – WebP file may still be missing, or .htaccess block is not firing

Quick visual check: Right-click any image on the page → Open image in new tab. If the URL in the address bar ends in .webp, that image is being served in WebP format.

Remember: Always clear BlinkSpeed → Cache → Delete HTML/JS/CSS Cache after any change before testing. Old cached pages will not reflect updated settings until they are regenerated.

Mobile WebP: Understanding the -595xh Variant

When Responsive Images is enabled under BlinkSpeed → Image Optimization, BlinkSpeed generates a second, smaller WebP file for mobile visitors – a 595-pixel-wide version saved with a -595xh.webp suffix alongside the standard .webp file in the bs-webp/ folder.

BlinkSpeed detects mobile visitors through their User-Agent and serves the smaller variant when it exists, reducing image weight even further for phone screens. If WebP is loading on desktop but not mobile, the mobile variant may not have been generated because the AI Optimisation ran only from a desktop context.

Fix: After enabling Responsive Images, go to BlinkSpeed → Optimize with AI and run the process again. BlinkSpeed will check for missing -595xh.webp files and generate them.

Frequently Asked Questions

Q1. Why is my BlinkSpeed WebP issue only happening on inner pages, not the homepage?

This is the free plan’s homepage-only restriction. When no premium license key is active, BlinkSpeed processes the full optimisation pipeline – including WebP conversion – only for the homepage. On all other pages, the pipeline exits early before reaching the image conversion code. The WebP conversion fix for this is upgrading to premium and running the full AI Optimisation process.

Q2. I ran the AI Optimisation and it completed, but images are still loading as JPEG. Why?

Three things to check: first, clear the BlinkSpeed cache – cached pages generated before WebP files existed will keep serving old HTML until cleared. Second, connect via FTP and verify that the wp-content/uploads/bs-webp/ folder actually contains .webp files – if it is empty, the cloud API conversion step may have failed silently and you need to Reset and re-run. Third, open .htaccess and confirm the # BEGIN BSWEBP block is present – if missing, re-save your General Settings.

Q3. How do I fix the broken images issue where blank boxes appear instead of photos?

Blank boxes are a lazy load image problem, not a WebP issue. Open DevTools (F12) → Console and look for JavaScript errors. If you find them, identify which plugin’s script is throwing the error and add it to BlinkSpeed → Exclusions → JS Exclusions with the defer modifier.

Also check whether img-lazyload.js is being delayed by BlinkSpeed’s own JS lazy load system – if so, add it to Exclude Javascript from Lazyload with no modifier so it always runs immediately.

Q4. Does the image optimization problem affect my Google PageSpeed or Core Web Vitals score?

Yes. If WebP images are not being served, PageSpeed Insights will flag “Serve images in next-gen formats” as an Opportunity, which means your images are heavier than they need to be and your LCP (Largest Contentful Paint) score is suffering.

If the lazy load image problem is causing blank images, your LCP element may be invisible during the scoring window, which severely penalises the LCP metric. Both issues are resolvable through the fixes in this guide.

Q5. Will enabling WebP break images in older browsers or cause a broken images issue?

No. BlinkSpeed’s Apache rewrite block includes the condition RewriteCond %{HTTP_ACCEPT} image/webp – it only serves WebP when the browser explicitly says it supports it through its request headers. Older browsers that do not support WebP never send this signal, so they always receive the original JPEG or PNG. There is zero risk of a broken images issue in any browser from enabling WebP conversion.

Q7. I am on an Nginx server. Why is the # BEGIN BSWEBP block not working?

Nginx does not read .htaccess files – they are an Apache-only feature. The # BEGIN BSWEBP block has no effect on Nginx servers, and BlinkSpeed’s validation test will likely fail when trying to write it, showing the “Unable to apply .htaccess webp rules” error and reverting the setting.

The good news is that BlinkSpeed’s PHP-based rewriting layer still works on Nginx – when BlinkSpeed builds a page’s HTML, it checks the bs-webp/ folder and rewrites image src attributes directly. This means WebP can still be served on Nginx through PHP rewriting, even without the .htaccess layer.

Contact your hosting provider to confirm PHP cache mode is set as the cache delivery method under BlinkSpeed → HTML Caches → Serve HTML Cache File By.

Q8. Can I stop a specific image from being converted to WebP to fix a WordPress image troubleshooting problem?

Yes. BlinkSpeed provides a filter hook called blinkspeed_exclude_image_from_convert_to_webp that returns true or false for each image path. When it returns true for a specific file path, BlinkSpeed skips WebP conversion for that image and serves the original format. Add this to your theme’s functions.php to exclude any image that is causing visual issues after WebP conversion, while all other images continue converting normally.

Q9. Does clearing the BlinkSpeed cache delete my converted WebP images?

No. BlinkSpeed’s page cache lives in wp-content/cache/bs-cache/, while your WebP image files live in wp-content/uploads/bs-webp/ – completely separate locations. The Delete HTML/JS/CSS Cache button only clears the page cache directory. Your converted WebP files are safe and will not be touched. The only way to delete the WebP files is to manually remove the bs-webp/ folder via FTP.

Summary

The BlinkSpeed WebP issue always comes down to one of six identifiable causes: the free plan’s homepage restriction, the AI Optimisation process not having run, WebP files missing from the server, the .htaccess BSWEBP block being absent, a lazy load image problem creating blank boxes that look like a WebP failure, or an image format that BlinkSpeed does not convert.

Use the diagnosis table to match your symptom to the correct cause, apply the targeted WebP conversion fix, clear the BlinkSpeed cache, and verify the result in DevTools. For the vast majority of WordPress image troubleshooting cases, running the AI Optimisation process and clearing the cache is all that is needed.

Logo

About the author

Meenakshi Nahar

I’m a Full Stack Developer and the founder of Blinkspeed, with over 10+ years of experience in web development, website speed optimization, Core Web Vitals, and technical SEO. My focus is helping businesses create faster, high-performing websites that improve user experience, search rankings, and conversions. Through this blog, I share actionable insights, optimization strategies, and real-world expertise gained from working with websites across multiple industries.

View all posts →

Leave a Reply