When the right alt text is none
This is the page that tells you not to use the tool. Some images want an empty attribute, and describing them makes the page worse for the people the description was meant to help.
Silence is a decision, and it has to be written down
There is a category of image that exists only to look like something. A hairline rule drawn as a graphic. A flourish beside a heading. A stock photograph of a desk at the top of an article about accounting. A spacer left over from a template. None of them change what the page says, and all of them are on it.
The correct treatment is not a short description. It is no description: the attribute present, its value empty, which assistive technology reads as an instruction to pass over the image without a word. That is an active statement, made by you, that this image is not carrying anything.
Leaving the attribute off entirely is the opposite. It says nothing, so the software guesses — and the guess is regularly the file name, announced in full. A page can lose more to twelve missing attributes than to twelve poorly written ones.
Four tests, in the order they resolve
Would you read it aloud?
Read the paragraph the image sits in out loud, and when you reach the image, say the description. If it sounds like an interruption, it is one. This is the crudest test and it settles most cases on its own.
Is the meaning already in the text beside it?
An icon beside its own label, a photograph of the person whose name is in the caption, a chart that the paragraph underneath already explains in full. Duplication is not generosity. It is the same thing twice to someone who cannot skip either.
Would removing it change the page?
Not visually — editorially. If the image vanished and the argument survived untouched, it is decoration. If a step in a process, a number, a comparison or an identification vanished with it, it is content and it needs describing at whatever length that takes.
Is it inside a link?
Then it is almost never decorative, whatever it looks like. If the image is the only thing inside the anchor, its alt text is the link’s accessible name, and an empty value leaves a link that announces itself as a link and nothing else. Describe where it goes.