A missing page is obvious: the visitor sees an error and knows something went wrong. A missing image is quieter. The page still loads, the text is still there, and the layout mostly holds together, so the problem can sit on your site for months without anyone reporting it. Meanwhile every visitor sees a broken frame where your product photo should be.
Soft 404 errors are quieter still, because the server insists nothing is wrong at all. This page covers both, since they share the same property: no error code alone will tell you they exist.
The most common cause and the least interesting one. Someone reorganised the media folder, or a cleanup script removed files that looked unused. The page still points at the old path. The repair is to correct the path or restore the file.
This one catches an enormous number of sites, because it only appears after you move from one server to another. Windows treats Photo.JPG and photo.jpg as the same file. Linux, which runs most web servers, treats them as two different files. A site developed locally on Windows and then uploaded to a Linux host can lose dozens of images at once, all of them present on the server, none of them reachable at the address written in the page.
If a batch of images broke the day you changed hosting, check the capitalisation before anything else.
Pointing an img tag at a file hosted on a site you do not control is a fragile arrangement. The other site can delete the file, reorganise its structure, or deliberately block requests coming from your pages, which is a common protection against bandwidth theft. In every case your image disappears and you find out from a visitor rather than from a monitor.
Host your images yourself. If you have the right to use an image, you have the right to keep a copy on your own server.
Moving your media to a content delivery network or to object storage changes the domain of every image address. If the pages were not updated at the same time, or if only some templates were updated, part of the site keeps pointing at the old location. The failure is often partial, which makes it harder to notice than a complete outage.
An address written as ../images/logo.png resolves differently depending on the depth of the page that contains it. The same template used on a top level page and on a page two directories deep will find the image in one case and miss it in the other. Absolute paths starting with a slash avoid the whole class of problem.
If your site is served over HTTPS and an image is requested over plain HTTP, browsers block the request for security reasons. The file exists and the address is correct, but the image never appears. The browser console shows a mixed content warning, and the repair is simply to change the protocol in the address. Browsers now upgrade some requests automatically and block others outright, a distinction MDN explains in Mixed content.
More than it looks. A page with visible broken images reads as abandoned, which affects how long visitors stay and whether they trust what the page says. On a commerce site a missing product photo directly reduces the chance of a sale. Search engines cannot index an image they cannot fetch, so you lose whatever traffic image search was sending you. And for visitors using a screen reader, a broken image with no alternative text is simply a gap in the page.
The alt attribute is the text a browser displays when the image fails, and the text a screen reader announces. It is your only safety net when an image breaks:
<img src="/images/red-bicycle.jpg" alt="Red touring bicycle with leather saddle">
Describe what the image shows, in a short phrase. Avoid stuffing keywords, and avoid starting with "image of", since that information is already conveyed. Purely decorative images should carry an empty alt="" so that assistive technology skips them rather than announcing a filename.
The W3C Web Accessibility Initiative sorts images into seven categories, each with its own rule for the alternative text, in its Images Tutorial. It is the clearest guidance available on the subject.
A soft 404 is a page that tells the visitor the content is missing while telling the server that everything is fine. The body says "sorry, this page does not exist" and the status code says 200 OK. Both statements cannot be true, and the machine believes the code.
Search engines index the page because the server declared it valid. Your index fills with copies of the same error message, competing with each other and with your real content. Crawl budget is spent fetching addresses that lead nowhere. And because the code never signals an error, none of your monitoring tools will flag it.
.htaccess that sends every unmatched address to a page, which then returns 200.Request an address that certainly does not exist on your site, something like /this-page-does-not-exist-12345, and look at the status code rather than the page:
curl -I https://www.example.com/this-page-does-not-exist-12345
If the first line contains 200 OK, you have a soft 404 and every mistyped address on your site is being indexed. The repair is in the code that produces the error page: send the header before any output.
<?php header("HTTP/1.1 404 Not Found"); ?>
Google Search Console also reports soft 404s explicitly in its page indexing report, which is the fastest way to find the ones caused by empty category pages rather than by error templates.
Opening every page and looking for broken frames does not scale past a few dozen pages, and it misses images that fail only for visitors outside your network or your cache. The reliable method is to crawl the site and request every image address the pages reference, recording which ones fail.
The Bye404 image checker does this: it walks through your pages, collects every image and document link, and reports the ones that do not answer, together with the page that references them.
Once you have the report, the repair decisions follow the same logic as for pages, described in our guide on fixing 404 errors. The status code reference explains what each response in the report means.
Away from webmaster tools, owater.org is a collaborative map of public fountains and water points, built and corrected by the people who use it.