PageSpeed Flagged One 105 KB Image: How We Cut It by 85% on Mobile
PageSpeed Insights flagged a single image on our homepage: a 105 KB screenshot, with an estimated 88 KB of it wasted. One image, one warning, and it was right. The file was 1440 pixels wide and phones were downloading all of it to show a picture about 400 pixels across.
The fix took about twenty minutes and cut the download on a phone from 108 KB to 16 KB. Here is what was wrong, what we changed, and the numbers, because this exact problem sits on most WordPress sites. For the wider picture beyond images, see our WordPress speed optimization guide.
Quick Summary: Three things made the image heavy: it was larger than its slot, it was a JPEG instead of WebP, and WordPress did not know it was a Media Library image, so it never offered smaller versions. Fixing all three took it from 108 KB to 33 KB on desktop and 16 KB on a phone. Keep JPG for the image you set as the social share image.
Written for site owners who see this warning and do not know what to do with it, by Jasper Frumau, WordPress developer at Imagewize, based in the EU. Last updated October 27, 2026.
What PageSpeed actually said
The report listed one file under image delivery: a screenshot of a WooCommerce product page with the EU legal guarantee notice open. It showed 105.2 KiB transferred and an estimated saving of 88.2 KiB. That second number is the useful one. It says the page could look identical with about 84% fewer bytes.
A 105 KB image is not a disaster on its own. The reason to care is that this was one image among many, on the homepage, loaded by people on phones and mobile data. Every unneeded kilobyte delays the moment the page looks finished, and image weight is one of the easiest speed wins to take.
Three causes, all common
- Too big for its slot. The file was 1440 by 900 pixels. On the homepage it sat in a card about 400 pixels wide on a phone and under 1000 on a desktop. The extra pixels were downloaded and thrown away.
- Old format. JPEG is fine for photos, but this was a screenshot with flat colors and sharp text. WebP compresses that kind of image much better at the same visible quality.
- No smaller versions offered. WordPress creates several sizes of every uploaded image and lets the browser pick the right one, but only when the image is tied to a Media Library entry. Ours was pasted in as a plain file address, so every device got the biggest file.
The third one is the sneaky one. The page looked fine, nothing was broken, and a plugin could not have told you about it. The image simply had no connection to WordPress, so WordPress could not help.
What we changed
- Cropped to the shape it is shown in. The card shows it as 16:9, so we cut the file to 16:9 and lost nothing visible.
- Resized to 1000 pixels wide. That is the widest it is ever displayed.
- Converted to WebP. We checked that the small legal text in the screenshot was still readable.
- Uploaded it to the Media Library and used that entry. WordPress then generated 300, 768 and 1000 pixel versions and added the list of sizes to the page automatically.
Before and after
| Visitor | Before | After | Saved |
|---|---|---|---|
| Desktop | 107,769 bytes (JPEG, 1440 px) | 32,764 bytes (WebP, 1000 px) | 70% |
| Phone | 107,769 bytes (the same file) | 16,002 bytes (WebP, 768 px) | 85% |
These are the measured file sizes served from the live site. We have not yet re-run a full PageSpeed test, and Google’s report lags a few days behind changes, so we are not quoting a new score. The point of this fix is fewer bytes, and bytes are easy to verify. We will update this post once the new test is in.
One exception: keep JPG for the social share image
WebP is the right format for images inside your pages. It is not the safest choice for the picture that appears when someone shares a link on Facebook, LinkedIn or X. Support for WebP in link previews has not always been reliable across platforms, and a broken preview costs more than the 20 KB you would save. So on our site the share image (the featured image, or the social image field in The SEO Framework) stays a JPG, and everything inside the page is WebP.
How to check your own site
- Run your homepage and your top product page through PageSpeed Insights and open the image delivery items. Each lists the file and the bytes it could save.
- Be most suspicious of images that were pasted in as a link or added by a page builder or pattern rather than picked from the Media Library.
- Do not stop at format. A correctly sized JPEG often beats an oversized WebP.
No command line? Tools for Windows and Mac
You do not need a developer’s toolkit to do the first two steps. Any of these works for a one-off image:
| Tool | Works on | Good for |
|---|---|---|
| Squoosh (free, in your browser) | Windows, Mac, Linux | Resize and export to WebP with a live before/after preview. Nothing to install. |
| GIMP (free) | Windows, Mac, Linux | Crop, resize and export as WebP from File, Export As. |
| Affinity Photo or Photoshop | Windows, Mac | If you already own one: crop, resize and export as WebP. |
| Preview (built in) | Mac | Resize only: Tools, Adjust Size. Convert to WebP in another tool. |
| PowerToys Image Resizer (free, from Microsoft) | Windows | Resize one or many images from the right-click menu. |
Whatever you use, resize first and convert second, then check the result at full size before uploading. Upload it through the Media Library (Media, Add New) and insert it from there, not by pasting a link, so WordPress can create the smaller versions. If you have hundreds of old images, an image plugin that converts and resizes in bulk is a better use of your time than doing them one by one.
For the developers: the commands and the markup
The export and import, using cwebp, ImageMagick and WP-CLI:
magick original.jpg -gravity center -crop 1440x810+0+0 +repage -resize 1000x -strip crop.png
cwebp -q 80 -m 6 crop.png -o image.webp
wp media import image.webp --title="Descriptive title" --alt="Descriptive alt text" --porcelain
To convert a whole folder of images that are already the right pixel size, run this from inside it:
for f in *.jpg *.png; do cwebp -q 80 -m 6 "$f" -o "${f%.*}.webp"; done
For the social share image, keep the raster. Export it as a JPG at 1200 by 630:
magick source.png -resize 1200x630^ -gravity center -extent 1200x630 -strip -quality 85 social.jpg
The last import command prints the attachment ID. WordPress only builds srcset and sizes when the image tag carries the wp-image-ID class and the block comment includes the same ID:
<!-- wp:image {"id":14306,"sizeSlug":"large"} -->
<figure class="wp-block-image size-large"><img src="/app/uploads/2026/10/image.webp" alt="..." class="wp-image-14306"/></figure>
<!-- /wp:image -->
Result on the page: srcset with 300w, 768w and 1000w files and sizes="(max-width: 1000px) 100vw, 1000px". On a 412 px phone at 1.75x density the browser needs about 721 pixels and picks the 768w file, which is 16,002 bytes. A raw src with no ID class gets no srcset, which is why the 1440 px file went to every device before.
Check the result by fetching the page and looking at the tag, not just the editor: curl -s URL | grep -o 'wp-image-[0-9]*" [^>]*srcset="[^"]*"'.
Frequently Asked Questions
- Should I convert all my WordPress images to WebP? Convert images that appear inside your pages and posts, and size them to the slot first. Keep JPG for the featured or social share image so link previews on Facebook, LinkedIn and X stay reliable.
- Why does PageSpeed still flag my image after I converted it to WebP? Usually because the image is still larger than its display size, or because WordPress is not offering smaller versions. Check the pixel size and that the image is used from the Media Library so a srcset is generated.
- How much does one image matter for page speed? One 105 KB image is not the whole story, but images are often among the heaviest parts of a page. Fixing the biggest few can save more than another plugin, and the savings matter most for visitors on mobile data.
Where to go next
- The full picture, from server to browser: WordPress speed optimization: the technical guide.
- The short version for small business sites: WordPress speed optimization checklist.
- Having us do it: WordPress speed optimization service.
Want Results Like These for Your Site?
We provide WordPress speed optimization for SMEs and white-label performance services for agencies. Our typical results: 90+ PageSpeed scores on both mobile and desktop, with measurable improvements to Core Web Vitals and conversion rates.
- Core Web Vitals optimization (LCP, CLS, INP)
- WooCommerce performance tuning
- Server-side optimization (Nginx, Trellis)
- Image optimization and lazy loading