Helm

What is alt text, and does it actually matter?

An image tile with a description plate feeding into both a screen reader symbol and a search magnifier
One description, two readers who cannot see the picture.

The short answer

A written description of an image, read aloud by screen readers and used by search engines that cannot see pictures. It matters for two reasons that turn out to be the same reason: people who cannot see your images and machines that cannot see your images both depend on it. Describe what the image shows, in a sentence, and skip decorative images entirely.

On this page

What it is

Every image on a web page can carry a text description. It is invisible to most visitors — it appears when the image fails to load, and it is what a screen reader announces in place of the picture.

That is the whole mechanism. The reason it matters is who depends on it.

Two audiences, one need

People using screen readers. For someone who cannot see your photograph of the dining room, alt text is the photograph. Without it, a screen reader announces "image" or reads out the filename, which is worse than silence.

Search engines and AI assistants. They cannot see pixels either. Alt text is how they know what an image shows — which matters more than it used to, because an assistant summarising your page is working from text alone.

The useful thing about these two audiences is that writing well for one writes well for the other. There is no trade-off to manage.

What to write

Describe what the image shows, plainly. "A corner table by the window, set for two" is good. "restaurant image" is not.

Keep it to a sentence. Enough to convey the content, not a paragraph.

Include text that appears in the image. If the picture contains words — a sign, a price, a menu heading — those words belong in the alt text, because otherwise they are invisible to everyone in both audiences.

Skip "image of" and "picture of". A screen reader already announces that it is an image. Starting every description with it is a small, repeated annoyance.

When to leave it empty

This surprises people: decorative images should have empty alt text, not a description.

A background texture, a divider, a flourish that carries no information — describing it forces a screen reader user to listen to noise. An explicitly empty alt attribute tells assistive technology to skip it, which is exactly right.

The test: if the image vanished and the page lost nothing, it is decorative.

The mistake that makes it useless

Stuffing keywords into it.

alt="best pizza london cheap pizza near me italian restaurant" was an SEO trick a long time ago. It now does nothing for ranking, and it does something quite bad for a screen reader user, who has to sit through it.

Write for the person who cannot see the image. That is also, conveniently, what search engines now reward.

The case that matters most

Images containing your actual information.

A menu as a photograph. A price list as a graphic. Opening hours in an image.

In each of those, the content of your business is invisible to search engines, assistants and anyone using a screen reader. Alt text helps a little. The real fix is not to put that information in an image in the first place — put it on the page as text, and use images for what images are for.

If you take one thing from this: alt text is a good habit, and a menu that needs alt text to be readable is a design problem that alt text cannot solve.

Alt text is worth doing. But the case this article ends on — a menu or price list that exists only as an image — is the one that actually costs money, and the two are worth separating clearly.

Alt text makes an image describable. It does not make the content inside the image findable. A search engine cannot rank a dish it can only read about second-hand, and an AI assistant asked "what does this place serve" will not answer from a photograph. If your menu, your prices or your opening hours exist only as pictures, no quantity of alt text recovers that.

The fix is structural rather than descriptive: those things have to be text on the page, edited as text. Helm builds them that way — the menu is a list of items with names, descriptions and prices you edit as fields, not a picture someone re-exports whenever a price moves — which is why a Helm site's menu is readable to a crawler and to an assistant. The reasoning is set out in should my menu be a PDF.