Test your website →

Blog

Why "No Images Found" Is Sometimes Worse Than Bad Images

When an accessibility scan finds no images to check, it usually means the images are hidden from everyone who can't see them.

When I built the accessibility checks in GazeSite, I expected the worst finding to be a page full of images with missing alt text. I was wrong. The worst finding turned out to be a page where the scanner reports “no images found” — on a site that is visibly full of images.

This sounds like a paradox, so let me explain what’s actually happening. When you look at a modern website, you see photos, product shots, logos, icons. But when a program reads the HTML of that same page, it often finds no image elements at all. The pictures are there visually and absent structurally. They’ve been attached as CSS backgrounds, or painted into canvas elements, or bundled into a JavaScript component that never produces a real img tag.

Why does this matter? Because the img tag isn’t just a way to display a picture. It’s a declaration. It says: here is an image, it lives at this address, and — through its alt attribute — here is what it means. A screen reader, which is software that reads pages aloud for blind and low-vision users, relies on that declaration. So does a search engine. So does a browser that fails to load the file and needs something to show instead. When you use a CSS background instead, you get the pixels but you throw away the declaration. The image becomes decoration in the technical sense: something that officially carries no meaning.

Sometimes that’s correct. A subtle texture behind your hero section genuinely is decoration, and CSS backgrounds are the right tool for it. The problem is that teams reach for the same technique for images that carry real meaning — the product photo, the chart, the photo of the founder, the diagram that explains how the thing works. To a sighted visitor, the page is rich. To a blind visitor, the page is a sequence of headings and buttons floating in a void. The information gap isn’t a degraded experience. It’s a missing one.

Here’s why I say this is worse than bad alt text. An image with empty or sloppy alt text is a visible defect. Any audit will flag it, any checklist will catch it, and the fix is obvious: write a better description. But an image that isn’t in the HTML at all produces no defect to flag. The automated report comes back clean, because there is literally nothing to check. The absence of a warning gets read as the absence of a problem. A team can pass every alt-text audit ever written while shipping a site that a blind user cannot make sense of. Bad images generate error messages. Missing images generate false confidence.

There’s a general lesson here that goes beyond accessibility. When a measurement tool says “nothing found,” you should always ask which of two things it means: nothing exists, or nothing was visible to the tool. These are wildly different situations that produce identical reports. A smoke detector with a dead battery also reports no smoke. In GazeSite’s reports I ended up treating “no images found” as a finding in its own right, precisely because on an image-heavy site it almost always signals the second situation, not the first.

The business framing matters too, because accessibility often gets filed under compliance, and compliance work gets deferred. Think about who actually can’t see your CSS-background product photos. Blind users, yes. But also search engines, which index real images and can send you traffic through image search — invisible images earn you nothing there. Also anyone on a flaky connection where the stylesheet loads slowly or not at all. Also automated tools of every kind, including the growing number of AI agents that read pages on behalf of users. Every one of these is a channel through which someone might have found you, understood you, or bought from you. When your images exist only as pixels, all of those channels go dark at once.

The fix is not exotic. Meaningful images go in img tags with alt text that says what the image conveys, written the way you’d describe it to someone over the phone. Purely decorative images can stay in CSS, or use an img tag with an empty alt attribute — alt="" — which is the standard way of saying “this one is safe to skip.” That’s the whole discipline: for each image, decide whether it means something, and then say so in the markup. The deciding is the real work, and no tool can do it for you, because meaning is a judgment call.

So if you run a scan on your site and it tells you there are no images to check, don’t relax. Open the page, look at everything you can see, and ask how much of it a machine can see. The most dangerous problems are the ones that don’t show up as problems.

More articles

← All posts