What the standard says
All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below.
Why it matters
A screen reader can only read text. An unlabelled image is silence; an unlabelled icon button is the word "button" and nothing else.
What a failure looks like
- failsA product photo with `alt=""` when the photo is the only thing naming the product.
- failsAn icon-only button with no `aria-label`, so it announces as "button".
- failsA chart shipped as a PNG with `alt="chart"` and no data table anywhere.
- failsDecorative flourishes given descriptive alt text, so the reader hears noise.
How to fix it
- doWrite the alt text as what you would say out loud if you were reading the page to someone on the phone.
- doGive purely decorative images `alt=""` — empty, not missing — so assistive tech skips them.
- doFor icon buttons, add `aria-label` naming the action, not the icon: "Delete draft", not "trash can".
- doFor charts, put the underlying numbers somewhere reachable — a table, a summary sentence, a download.
How A11ySignal checks it
7 automated checks run against this criterion on every scan.
criticalimage-altImages must have alternative text
criticalinput-image-altImage buttons must have alternative text
seriousaria-meter-nameARIA meter nodes must have an accessible name
seriousaria-progressbar-nameARIA progressbar nodes must have an accessible name
seriousobject-alt<object> elements must have alternative text
seriousrole-img-alt[role="img"] and [role="image"] elements must have alternative text
serioussvg-img-alt<svg> elements with an img or image role must have alternative text
What a tool cannot tell you
A scanner can see that alt text exists. It cannot tell whether "image123.jpg" describes the image, so the wording is on you.