At 6:51 on the evening of 8 June, a plugin on this website set about making our pictures smaller.
It worked through twenty images in about seven seconds, converting each one to WebP, the format that loads faster on phones. It kept a tidy log as it went: each picture, its new WebP name, and not one error.
Nine of the twenty files it wrote were empty. Not blurry, not damaged. Empty: 0 bytes. One of them was the logo of Kirksey Brothers Furniture in Tupelo, a client whose website I built and host, and whose card sits in the Customer Spotlight on our own home page.
That file stayed empty until 10 November. Five months.
The short answer
Can an image optimisation plugin break the pictures on your website? Yes. And when it does, nothing tells you. The page still loads. The server still reports success. No error appears anywhere. The only way to find out is for a person to look at the right part of the right page and notice that something is wrong.
That is the whole problem. Here is how it played out.
What an empty picture does to a page
You might expect a missing logo to leave a small blank square. It did something much worse.
A picture normally tells the browser how big it is. An empty file has nothing to tell. The website had no record of the logo’s size either, so it told the browser the image was one pixel wide and one pixel high. The card’s layout did its best with that and stretched the space into a box one pixel wide and 1,504 pixels tall.
On a phone, the Kirksey Brothers card grew to 2,072 pixels tall. The card for Lake House Gallery, built exactly the same way, was 718. The name of the business was pushed 1,544 pixels down the card, and the short description that belongs under the logo ended up at the very bottom, after a long empty stretch of blue. On a desktop screen the broken card was 1,812 pixels tall, and because the cards sit in pairs, it dragged the healthy Lake House card next to it to the same height.
So this was not a missing logo. It was a hole in the middle of the page we use to show people our work.
Why nothing caught it
Here is the uncomfortable part. Everything that is supposed to catch a problem like this said it was fine.
The plugin logged every image as processed. The file existed, in the right folder, under the right name. When a browser asked for it, the server answered with the code that means “here you are”, and then sent nothing. Our server logs from August and September record that happening 206 times. Every one was marked as a success. Every one was 0 bytes long.
A broken-link checker would pass it, because the link was not broken. An uptime monitor would pass it, because the site was up. The browser did not even show the little torn-picture icon it uses for a missing image, because, as far as it could tell, nothing was missing.
And the card was most of the way down a long home page. Anyone who looked at the top of the site saw exactly what they expected to see.
It went further than one card. The file was already empty a week later, on 15 June, when the Kirksey Brothers client spotlight was published. The same logo also sat in the client grid on our small business services page, where it showed as a blank tile one pixel across.
A plugin doing exactly what it was told
It would be easy to call this a bad plugin, and it is no longer running on this site. But the more useful lesson is that it did what it was asked to do. It was told to convert the images, and it converted them. Nine came out empty, and it had no way of noticing, because it was checking that it had written a file, not that the file had a picture in it.
A great deal of what goes wrong on a small business website goes wrong like this. Not with a crash, but with a tool that reports success while producing nothing. We have seen it with an email scanner that passed six months of mail unchecked, and with a contact form that accepted every message and delivered none of them.
How it was fixed
On 10 November the empty file was replaced with the logo Kirksey Brothers use on their own website today, centred on a square so the card’s crop could not cut off the first letter. On a phone the card went from 2,072 pixels tall back to 718, an exact match for Lake House Gallery next to it. The blank tile on the services page filled in at the same time.
The other eight empty files from that June evening were not used anywhere on the site, so they broke nothing anyone could see. That was luck, not design.
What this means for your website
If your website has ever had an image optimisation, compression or “speed” plugin run across it, some of your pictures could be empty right now, and nothing you normally look at would show it.
Two checks will tell you.
The first takes ten minutes. Open your website on your phone and scroll every page to the bottom, slowly, looking at every picture: logos, product photos, staff photos, the small ones in the footer. You are looking for blank spaces, boxes that are oddly tall or thin, and text that has slid away from where it belongs.
The second takes whoever looks after your site about a minute. Ask them to list every image file on the site that is 0 bytes long. On a healthy site the answer is none. On ours, on 10 November, it was ten.
The card that broke was on the page I would most want to look right, and it sat there broken for five months while everything said it was fine. If you are not sure what is halfway down your own home page, or what your last plugin run actually did to your pictures, call me on 662-422-1809. We can go through it together.