WCAG alt text usually reaches a developer as a line on a ticket: images need alt text, add it, close the ticket. The criterion behind that line asks for something narrower and harder than the ticket implies.
It is one sentence with six exceptions. It does not ask for a description on every image, it sets no character limit, and it says nothing at all about search engines.
What follows is the text of the criterion, who gets to call an image decorative, why an automated check cannot tell you whether you passed, what screen reader users actually report, and where the legal requirement lands. Every source is linked and dated.
WCAG alt text in the words of the standard
The whole requirement for images is success criterion 1.1.1, Non-text Content, at Level A. Level A is the floor, so it applies at every conformance level above it as well. The wording has not changed between WCAG 2.0 and WCAG 2.2, which has been a W3C Recommendation since 12 December 2024.
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.
Two phrases carry it. A text alternative replaces the image rather than labelling it, and equivalent purpose means the replacement has to do the same job the image was doing on that page.
So one photograph can need three different alt values on three different pages, and a description can be accurate and still fail. Accuracy is a fact about the picture. Equivalence is a fact about the page.
| Situation in the criterion | What the criterion asks for | What that looks like in HTML |
|---|---|---|
| Controls and input | A name that describes the purpose of the control | On a linked or button image, alt names the destination or the action, not the picture |
| Time-based media | At least descriptive identification of the media | A poster frame is identified; the real alternative is the captions or transcript |
| Test or exercise | Descriptive identification, where text would invalidate the test | The image is identified rather than solved in the alt attribute |
| Sensory experience | Descriptive identification of the experience | A work of visual art is identified; the experience itself is not transcribed |
| CAPTCHA | Identify and describe the purpose, plus a form using another sense | The image is described as a CAPTCHA and an audio alternative is offered |
| Decoration, formatting, invisible | Implemented so it can be ignored by assistive technology | alt=”” on the img element, or the image moved into CSS |
Nothing in the criterion sets a length. There is no character limit in WCAG and none in HTML — the 125-character figure everyone repeats is a convention borrowed from screen reader behavior. Search engines read the same string for their own reasons, covered in the search side of the alt text field, and none of that changes what 1.1.1 asks for.
Who gets to decide that an image is decorative
The decoration exception is the one people reach for most, and the one that needs information the image does not contain. The W3C is blunt about where that information lives.
Whether to treat an image as decorative or informative is a judgment that only the author can make, based on the reason for including the image on the page.
The consequence is concrete. A product photograph on a shop page carries information no text on that page supplies. The same file running across a category header, beside a paragraph that already describes the product, carries none.
<!-- Informative: the photo carries what no text on the page says -->
<img src="chair-walnut.jpg"
alt="Dining chair in oiled walnut with a woven paper cord seat">
<!-- Same file, decorative: the paragraph beside it already says all of that -->
<img src="chair-walnut.jpg" alt="">
<!-- Functional: the image is the link, so alt describes where the link goes -->
<a href="/shop/walnut-chair/">
<img src="chair-walnut.jpg" alt="Walnut dining chair, product page">
</a>
The W3C publishes a decision tree for exactly this, and it resolves most images in one pass (W3C, An alt Decision Tree, checked 2026-08-16). It asks about function and context first and about the contents of the picture last.
alt=”” tells assistive technology there is nothing here to announce. Leaving the attribute off leaves that choice to the screen reader, and the W3C notes that some announce the file name instead. An audit that counts images carrying an alt attribute scores those two identically, which is the first sign that coverage is the wrong number to chase.
What an automated check settles, and what it leaves open
This is the part that decides how much of the job can be bought. The HTML specification says it outright, in the section addressed to tools that generate markup.
This is intended to avoid markup generators from being pressured into replacing the error of omitting the alt attribute with the even more egregious error of providing phony alternative text, because state-of-the-art automated conformance checkers cannot distinguish phony alternative text from correct alternative text.
Read that as a product requirement rather than a footnote. The specification would rather a generator leave the attribute off than write something plausible and wrong, because nothing downstream can tell the two apart.
| Question about the image | An automated check | A person |
|---|---|---|
| Is the alt attribute present | Answers it reliably, at any scale | Not needed |
| Is the value empty | Answers it reliably | Decides whether empty was the right answer |
| Is the value a file name or the word image | Catches the common patterns | Catches the plausible sentence that happens to be wrong |
| Does the description match the picture | cancel | Looks at the image |
| Does it serve the same purpose as the image on this page | cancel | Knows why the image was put there |
| Should this image be decorative | cancel | The author’s judgment, per the W3C |
WebAIM measures both halves once a year. In its February 2026 pass over the top one million home pages, 16.2% of all images were missing alt text, not counting alt=””. Another 10.8% of the images that had it carried questionable or repetitive text: the word image, a file name, or a copy of the text beside it.
WebAIM’s own summary of the two numbers: more than one in four images on popular home pages has missing, questionable, or repetitive alternative text (The WebAIM Million, 2026 report, checked 2026-08-16).
WordPress accounted for 252,302 of those home pages and averaged 52.8 detected errors, against 56.1 across the full sample. Better than average, on a measure where the average home page carries 56 detectable accessibility errors.
Write anything into every empty alt attribute and coverage reaches 100% while conformance does not move at all. The report turns green, the scanner stops complaining, and someone using a screen reader hears file names read out as words. The HTML specification calls that outcome the more egregious of the two errors, and it is right.
What screen reader users report, and what they never report
Alt text is a real problem and it is not the worst one. In WebAIM’s tenth screen reader user survey, run across December 2023 and January 2024 with 1,539 valid responses, images with missing or improper descriptions ranked sixth of twelve problematic items.
Ahead of it: CAPTCHA, interactive elements that do not behave as expected, links and buttons that make no sense, screens that change unexpectedly, and lack of keyboard access. WebAIM notes that the ordering has been largely unchanged for 14 years.
The number that changes how I plan work is a different one. 85.9% of respondents said more accessible websites would do more for accessibility than better assistive technology — a share that has risen at every survey since 2009.
Then the silence. 44.3% said they contact a site owner about a barrier not very often and 21.7% said never, which is about two thirds who mostly do not report (WebAIM Screen Reader User Survey #10, checked 2026-08-16). WebAIM states that the sample was not controlled, so read it as the best public evidence rather than a census.
That is the practical case for doing this unasked. Nothing in your inbox, your analytics or your error log will ever tell you that an image was unreadable.
Where the legal requirement actually applies
Compliance is a jurisdiction question, and both of the regimes people cite are narrower than the summaries suggest. I am a developer rather than a lawyer, so what follows is what the texts say, not advice about your site.
The European Accessibility Act, Directive (EU) 2019/882, applies to a listed set of products and to services provided to consumers after 28 June 2025. The service list is specific: electronic communications, access to audiovisual media, elements of passenger transport, consumer banking, e-books and dedicated software, and e-commerce services.
Article 4(5) exempts microenterprises providing services, and Article 3(23) defines one as an enterprise employing fewer than 10 people with an annual turnover or balance sheet total of no more than EUR 2 million. Plenty of WordPress shops sit inside that exemption and plenty sit outside it.
The directive names no technical standard. Search the text for WCAG and there are no hits — Annex I asks instead for information that is “perceivable, operable, understandable and robust”, and for “supplementing any non-textual content with an alternative presentation” (Directive (EU) 2019/882 on EUR-Lex, checked 2026-08-16). Which standard satisfies that where you are is set by national transposition.
The most-cited US rule is narrower still. The Department of Justice’s Title II rule, published 24 April 2024, sets WCAG 2.1 Level AA for the web content and mobile apps of state and local governments. An interim final rule published 20 April 2026 then moved the compliance dates back (ADA.gov fact sheet on the web rule, checked 2026-08-16).
| How they compare | European Accessibility Act | ADA Title II web rule |
|---|---|---|
| Instrument | Directive (EU) 2019/882 | US Department of Justice final rule, published 24 April 2024 |
| Who it binds | Economic operators placing the listed products and services on the EU market | State and local government entities |
| From when | Services provided to consumers after 28 June 2025 | 26 April 2027 at 50,000 people or more, 26 April 2028 below that and for special district governments |
| Technical standard named in the text | None. The requirements are stated functionally and the word WCAG does not appear | WCAG 2.1 Level AA |
| Exemptions written into it | Microenterprises providing services: under 10 people and turnover or balance sheet total of EUR 2 million or less | Limited content exceptions, archived web content among them, each with conditions set out in the rule |
A personal blog, a portfolio, a brochure site with no transaction: none appears in the European Accessibility Act’s service list, and none is a US state or local government. That is a statement about these two instruments and nothing more. Other national laws exist, sector rules exist, and public-sector contracts routinely require a conformance level regardless. If the answer carries money, it is a question for a lawyer.
How to write a text alternative that serves the equivalent purpose
Deciding an image before describing it
The first two steps take longer than the writing and remove most of the guesswork from it.
-
1
Say why the image is on the page
One sentence, in your own words, before writing anything into the field. If the honest answer is that it breaks up the text or that it looks good, you have a decorative image and the correct alt value is empty. -
2
Run it through the alt decision tree
The W3C tree asks whether the image contains text, whether it is a link or a button, and whether the information appears elsewhere on the page. Function and context come first, contents last. Most images resolve on the second question. -
3
Write the purpose, not the inventory
For a product photo the purpose is the thing being sold and what distinguishes it. For a chart the purpose is the finding, not the axes. Drop Image of and Photo of, since the element is already announced as an image. -
4
Turn images off and read the page
Every browser can disable images, and the page should still make sense end to end. Each place the thread breaks is an image whose purpose never reached the text. This catches more than any scanner and takes about two minutes per page. -
5
Listen to one page, once
NVDA on Windows and VoiceOver on macOS and iOS cost nothing and are already installed on two of the three. Ten minutes on your own home page changes how you write the field permanently, which is worth more than any checklist including this one.
Where automation helps, and where it quietly hurts
For a site with a few dozen images, write them yourself. Deciding purpose is most of the work, and once it is decided the sentence takes under a minute. No tool improves on a person who knows why the picture is there.
The arithmetic breaks in the thousands. A library of 4,000 images is roughly two working weeks of typing, which is why the field stays empty on exactly the sites where it matters most.
Typing is the part I can automate, and that is what Image SEO Optimizer does. It sends the image to a provider you hold the key for — Anthropic, Google or OpenAI — and writes the result into the standard WordPress alt field, with the old and new value recorded.
The limits matter more in this article than in an SEO one. The free plugin handles one image at a time and the bulk runner is Pro. AI calls are capped at 100 per user per hour. Alt text is scored against 50 to 125 characters and 10 to 16 words by default, and how the SEO score is calculated reads structure rather than truth.
What a generated description settles, and what it leaves to you
- Describes what is inside the frame, in the language you set, for images that are literal photographs
- Replaces an empty attribute with something more useful to a listener than a file name
- Produces a draft to edit, which most people work through faster than a blank field
- Decides whether an image is decorative — nothing in the plugin makes that call
- Knows why the image is on the page, which is what equivalent purpose means
- Reports whether the description it just wrote is true
- Makes a page conform to 1.1.1, or to any level of WCAG
Two things follow from that list. Decorative images have to be excluded before a batch runs rather than corrected after it, and every generated string needs a human read — which is why editing a generated description before it saves is a step and not a setting. Output also varies between runs, so two near-identical photographs come back worded differently.
If the search argument is what you came for, how image SEO actually works covers the field properly. Accessibility does not need that argument to be worth the afternoon.
Frequently asked questions
One thing to do after reading this: open the page you are proudest of, disable images in the browser, and read it from the top. Every place the sense breaks is an image whose purpose never made it into text, and no scanner on the market would have told you.
Image SEO Optimizer Pro
Fill the empty field, keep the judgment
Image SEO Optimizer writes alt text on your own Anthropic, Google or OpenAI key and saves it to the standard WordPress alt field, with the old and new value logged. It does not decide which images are decorative and it does not make a page conform to WCAG. One image at a time in the free plugin; the bulk runner is Pro.
Personal
Single-site license – ideal for personal blogs or small websites.
- check_circle 1 Site License
- check_circle Bulk Processing
- check_circle Image Context Generation
- check_circle Real-time Upload Optimization
- check_circle Best-in-Class AI Models
Freelancer
License for up to 10 sites – ideal for freelancers and developers.
- check_circle 10 Sites License
- check_circle Bulk Processing
- check_circle Image Context Generation
- check_circle Real-time Upload Optimization
- check_circle Best-in-Class AI Models
Agency
Unlimited Sites – ideal for digital agencies and corporations.
- check_circle Unlimited Sites
- check_circle Bulk Processing
- check_circle Image Context Generation
- check_circle Real-time Upload Optimization
- check_circle Best-in-Class AI Models