The empty alt is a choice
alt="" tells a screen reader to skip the image on purpose. A missing alt tells it to read the file name. They look similar in the source and could not be more different to a reader.
Two images. One has alt="". One has no alt attribute at all. In a code review they look like the same oversight. To a screen reader user they are opposites.
<img src="divider.svg" alt="">
<img src="divider.svg">
The first says: this image is here for sighted eyes only, skip it. The screen reader skips it. The reader never knows it was there, which is exactly right for a divider.
The second says nothing. The screen reader has to say something, so it falls back to the only text it has: "image, divider dot svg." Or worse, "image, img underscore 20260418 underscore final underscore v3." On a page with ten decorative flourishes, the reader hears ten file names between the paragraphs.
When empty is right
The test is simple. Cover the image with your hand. Did the page lose anything a reader needs?
- A divider, a background texture, a decorative flourish: no. Empty alt.
- A stock photo beside a heading that already says what the photo shows: no. Empty alt.
- A spacer or a tracking pixel: no. Empty alt.
- An icon next to a text label that says the same thing ("Download" with a down-arrow icon): no. Empty alt, because the word is right there.
- The product photo on a product page: yes. Write the alt.
- The only thing inside a link or button: yes, and the alt is the link's name, not a description.
Empty alt is not a cop-out when the answer to the test is no. It is the kinder option, because every image a screen reader announces costs the reader a moment of attention, and attention spent on "decorative swoosh" is attention taken from the content.
When empty is a cop-out
It becomes a cop-out when the answer was yes and the author did not want to think. The chart with no table. The infographic that carries the whole argument. The screenshot of the error message the article is about. Those images are the content, and an empty alt deletes it.
The Alt Text Studio has one context where empty is right and four where it is not. Writing all five is the fastest way to feel the difference.
Three forms, and what each does
| Markup | What the screen reader does |
|---|---|
alt="A red kettle on a stove" |
Announces "image, a red kettle on a stove" |
alt="" |
Says nothing; the image does not exist for the reader |
| no alt attribute | Announces "image" and then the file name |
The third row is never what anyone wants. The agent ruleset makes it a blocker, AW-ALT-001, because it is both the most common alt text failure and the easiest to fix: add the attribute, then decide what goes in it.
For agents and generators
If you are writing code that emits images, never emit an img without an alt attribute. If you do not know what the image is for, alt="" is a safer default than a guess, and a guess is safer than nothing. If you do know, write what the image contributes on this page. The decision procedure is in How an agent should decide on alt text.