Non-text Content
Every piece of non-text content that carries meaning needs a text alternative serving the same purpose. That is the opening line of WCAG 1.1.1. Then the rule names six situations where the bar moves, and five of them lower it. A control or an input takes a name describing what it does. Audio and video files, a test question, and anything built to create a sensory experience take a short descriptive label instead. A full equivalent there would be impossible, or would hand over the answer. A CAPTCHA takes two things at once, a text alternative saying what it is for and a second version using a different sense. Pure decoration takes the opposite treatment. Mark it so assistive technology can skip it, which for an image usually means an empty alt attribute, written alt="". And non-text content reaches wider than pictures. Audio files, video files, emoji, ASCII art and images of text all sit inside this rule.
Why it matters
Information locked inside an image is not there at all for someone who cannot see it. A screen reader has nothing to read out. A braille display has nothing to render. The customer is left guessing. Picture a store where every product photo has no words attached. The photography could be beautiful and a blind shopper still could not tell one ring from another. The other half of the job is judgment, because alt text is a function of the page rather than of the picture. A photo of the world is "International Travel" on a travel site and "International Campuses" on a university one. Same image, different sentence. The page is about something different, so the description is too. The words you write are also the only version of that image a search engine can read, so a described image is a findable one.
Who this rule protects
Blind and screen reader users meet this rule first, because for them the alt text is the image. Deafblind users read the same words on a braille display, which makes the text the only route in. People browsing with images switched off on a slow connection get whatever you wrote and nothing else. So does anyone having the page read aloud by a voice assistant.
How to check it yourself
- Turn on a screen reader and move through the page. Every image carrying meaning should be announced with words you could use in place of the picture. VoiceOver opens on a Mac with Cmd+F5.
- Read the alt text on product and hero images and ask whether it names the item and the variant on screen. If the sentence would work as a replacement for the photo, it passes. Judge what it says rather than how it is spelled, because a file name that happens to describe the picture is fine and a hand-written sentence that describes nothing is not.
- Check every icon that acts as a control, such as search, cart and close. Each one has to be named for what it does rather than for what it looks like.
- Confirm decorative images are marked so assistive technology skips them. For an image element that means alt="". A purely decorative graphic can move into a CSS background instead.
- Find any chart or diagram and look for two things. A short label naming it, and a longer description nearby carrying the trend and the numbers.
- Find any CAPTCHA and check both halves. It needs text saying what it is for, and a second version using a different sense, such as audio alongside the visual puzzle.
- Check the alt text is written in the same language as the page around it. An English description on a French page is a conformance problem rather than a style one.
Failures we see most often
- Product photos ship with no alt attribute at all, so a screen reader falls back to the file name and every product sounds the same.
- A decorative divider carries alt="decorative-line-final-v2" instead of an empty alt, so the same noise is read out on every page of the site.
- An icon-only cart button has no accessible name, so it is announced as "button" and nothing more.
- A status badge is drawn with a CSS background image, which cannot carry a text alternative, and nothing else in the markup says what the status is, so it reaches sighted users only.
- A chart carries alt="chart", which describes nothing, and the data stays visible to sighted readers alone.
- An editor swaps the image in the CMS and leaves the old alt text behind, so the description now belongs to a picture that has gone.
- A price is spelled out in ASCII art, or with look-alike characters borrowed from another alphabet, so a screen reader reads it as noise.
- A CAPTCHA offers wavy letters and nothing else, which shuts out anyone who cannot read them.
Who this one is for
Read from this rule's own note above, so the grouping and the note cannot disagree.
- Blind and screen reader userspeople who cannot see the screen
How this one is tested
We list 8 ACT rules against 1.1.1. Each one defines exactly what a checker looks at, which is how automated tools decide what to flag. Each one also checks a slice, so passing every rule here is not the same as meeting the criterion, and a rule can be proposed rather than approved or need a person to finish it. The note beside each says which.
- Element marked as decorative is not exposedA tool can check this
- Image accessible name is descriptiveA tool finds candidates, you decide
- Image button has non-empty accessible nameA tool can check this
- Image has non-empty accessible nameA tool can check this
- Link has non-empty accessible nameA tool can check this
- Object element rendering non-text content has non-empty accessible nameA tool can check this
- SVG element with explicit role has non-empty accessible nameA tool can check this
- Image not in the accessibility tree is decorativeA tool can check this
How to fix it
- Write alt text by asking what you would say out loud instead of showing the image, on this page, in this sentence. For a product, name the item and the variant on screen, such as the color or the size.
- Name a functional icon for its job rather than its drawing. A search button described as "Search" tells a user what pressing it does. "Magnifying glass" only describes the picture.
- Use alt="" for decoration, or move the graphic into a CSS background so there is nothing left for assistive technology to announce.
- Give a complex chart two alternatives. A short one that names it, and a longer description nearby carrying the trend and the implications, with the actual data in a table wherever that is practical.
- For an inline SVG icon, add a role of img alongside the accessible name. Some browser and screen reader pairings skip the name on an svg element without it.
- Label your CAPTCHA and offer a second route through it, such as an audio version. Then give people a way to reach a human when both routes fail.
Step-by-step fix guides (39)
- H37: Add alt text to every meaningful image
- H67: Give decorative images an empty alt
- G94: Write alt text that serves the same purpose as the image
- H44: Attach a real label to every form field
- H30: Write link text that says where the link goes
- ARIA6: Name icon-only controls with aria-label
- H2: Combine adjacent image and text links into one
- H24: Add alt text to every image map area
- H36: Add alt text to image submit buttons
- H53: Give object elements meaningful fallback content
- H65: Label form fields when a visible label will not fit
- H86: Give emojis and ASCII art text alternatives
- ARIA9: Assemble one label from several text pieces
- ARIA10: Name images and charts with aria-labelledby
- ARIA15: Link complex images to longer descriptions
- C9: Put decorative images in CSS backgrounds
- C18: Replace spacer images with CSS margin and paddingAdvisory
- G68: Describe the purpose of live-only streams
- G73: Link complex images to a long description
- G74: Describe complex images in the nearby text
- G82: Name the function of interactive images
- G92: Write long descriptions carrying the same information
- G95: Give every graphic a brief text description
- G100: Use the accepted name as the alternative
- G143: Describe every CAPTCHA's purpose in text
- G144: Offer a second CAPTCHA in another modality
- G196: Describe grouped images with one alternative
- PDF1: Add alt text to images in PDFs
- PDF4: Hide decorative PDF images from screen readers
- F3: Do not put information in CSS background images
- F13: Do not write alt text that drops color meaning
- F20: Do not let text alternatives fall out of date
- F30: Never use filenames or placeholders as alt text
- F38: Do not leave decorative images announced
- F39: Do not give decorative images junk alt text
- F65: Never ship images without a text alternative
- F67: Do not write long descriptions that miss the point
- F71: Do not fake text with look-alike characters
- F72: Do not publish ASCII art without an alternative
Passes vs. fails
Passes
The image ships as <img src="ring-2041.jpg" alt="Gold twist ring, size 7">, so a screen reader announces "Gold twist ring, size 7, image" and the shopper knows what it is.
Fails
The image ships as <img src="ring-2041.jpg"> with no alt attribute, so a screen reader announces "ring-2041.jpg, image" and the shopper learns nothing.
In audits and lawsuits
WebAIM's 2026 survey of a million home pages found missing alternative text on 53.1% of them, second only to low contrast. It is usually the first thing an automated scanner flags, so it sets the tone for how thorough the rest of an audit looks. One nuance settles a lot of arguments about scanner output. What fails is alt text that tells you nothing, not alt text that happens to carry a file extension. A photograph of a dog described as "dog.jpg" loses nothing at all. A ring described as "IMG_2041.jpg" loses the product. In our audits this turns up on nearly every unaudited store, and almost always on the images that matter most. Product photos, icon buttons, promotional banners.