WCAG 1.1.1 Non-Text Content: Complete Alt Text Implementation Guide
WCAG Success Criterion 1.1.1 Non-Text Content is one of the most fundamental accessibility requirements—yet one of the most commonly violated. This Level A criterion requires providing text alternatives for all non-text content so screen reader users can understand images, graphics, and other visual elements.
What is WCAG 1.1.1?
Official wording: "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose."
Applies to:
- Images
- Graphics
- Charts and graphs
- Icons
- Form input images (buttons, CAPTCHAs)
- Image maps
- Embedded objects (audio, video placeholders)
Why 1.1.1 Matters
26% of U.S. adults have visual disabilities
80% of ADA lawsuits cite missing or poor alt text
Screen readers: Convert images to speech via alt text
No alt text: Image announced as "Image" or filename
Good alt text: Conveys meaning equivalently
Types of Images
1. Informative Images
Convey information needed to understand content.
Example: Product photo, diagram, infographic
Alt text: Describe the information conveyed
<img src="sales-chart.png" alt="Bar chart showing 40% increase in sales from 2023 to 2024">
2. Decorative Images
Purely visual, no information value.
Example: Dividers, background patterns, purely aesthetic images
Alt text: Empty alt attribute
<img src="decorative-border.png" alt="">
Why empty: Tells screen readers to skip image.
Never omit alt attribute entirely—use empty string alt="" for decorative images.
3. Functional Images
Images that perform functions (buttons, links).
Example: Search icon button, social media icons
Alt text: Describe the action/destination
<button>
<img src="search-icon.svg" alt="Search">
</button>
<a href="https://twitter.com/company">
<img src="twitter-icon.svg" alt="Follow us on Twitter">
</a>
4. Complex Images
Charts, graphs, diagrams requiring detailed explanation.
Alt text: Brief description + link to longer description
<img
src="financial-report-chart.png"
alt="Financial performance chart showing revenue and expenses"
longdesc="financial-chart-description.html"
>
<!-- Or use aria-describedby -->
<img
src="chart.png"
alt="Q1 2024 Revenue by Region"
aria-describedby="chart-desc"
>
<div id="chart-desc">
<p>Detailed description: The chart shows revenue across four regions.
North America: $2.5M, Europe: $1.8M, Asia: $1.2M, Other: $0.5M.</p>
</div>
5. Text in Images
Avoid images of text when possible.
If unavoidable:
<img src="logo-text.png" alt="BrowseCheck: Website Accessibility Monitoring">
Better: Use web fonts with actual text.
Writing Good Alt Text
Do's
Be concise: Aim for 125 characters or less (screen reader limit)
Be specific: "Golden retriever puppy" not "dog"
Describe purpose: For functional images, describe action
Include text: If image contains text, include it in alt
Context matters: Alt text should fit surrounding content
Don'ts
Don't say "image of": Screen readers announce it's an image
Don't be redundant: If caption says same thing, alt can be shorter
Don't over-describe: Essential information only
Don't use filenames: "IMG_1234.jpg" is useless
Don't leave empty for informative images: Fails WCAG
Examples: Good vs. Bad
Product Image
❌ alt="Image"
❌ alt="Product"
❌ alt="product-photo-1234.jpg"
✅ alt="Nike Air Max 270 running shoes in blue and white"
Chart
❌ alt="Chart"
❌ alt=""
✅ alt="Pie chart showing 60% mobile, 30% desktop, 10% tablet traffic"
Decorative
❌ alt="Decorative image"
❌ No alt attribute
✅ alt=""
Logo
❌ alt="Logo"
✅ alt="BrowseCheck" (company name)
Social Icon
❌ alt="Twitter"
✅ alt="Follow us on Twitter" (describes action)
Implementation Techniques
HTML img Element
<img src="photo.jpg" alt="Description">
CSS Background Images
Problem: Can't add alt text to CSS backgrounds
Solution:
- If decorative: No alt needed
- If informative: Use
<img>instead, or provide text alternative
<!-- Bad: Informative image as background -->
<div style="background-image: url(chart.png)"></div>
<!-- Good: Use img -->
<img src="chart.png" alt="Sales chart">
SVG Images
Inline SVG:
<svg role="img" aria-labelledby="chart-title">
<title id="chart-title">Monthly Sales Chart</title>
<!-- SVG content -->
</svg>
SVG as img:
<img src="icon.svg" alt="Download">
Icon Fonts
<button>
<span class="icon-search" aria-hidden="true"></span>
<span class="visually-hidden">Search</span>
</button>
Or:
<button aria-label="Search">
<span class="icon-search" aria-hidden="true"></span>
</button>
Context-Dependent Alt Text
Same image, different contexts:
Blog post: alt="Smartphone displaying BrowseCheck dashboard"
Link to product: alt="View BrowseCheck accessibility monitoring tool"
Decorative in sidebar: alt=""
CAPTCHAs
Problem: Image CAPTCHAs are barriers
Solutions:
- reCAPTCHA v3 (invisible)
- Audio alternative
- Text-based challenge
- Honeypot fields
If using image CAPTCHA:
<img src="captcha.png" alt="CAPTCHA: Enter the characters shown">
Always provide audio alternative.
Testing Alt Text
Automated Tools
Tools like axe DevTools, WAVE detect:
- Missing alt attributes
- Empty alt on non-decorative images (sometimes)
Can't detect: Whether alt text is meaningful.
Manual Testing
Turn off images: Do alt texts convey information?
Screen reader: Listen to page with NVDA or VoiceOver
Context review: Does alt fit surrounding content?
Common Mistakes
Mistake 1: No alt attribute
<!-- ❌ Fails WCAG -->
<img src="photo.jpg">
Mistake 2: Redundant "image of"
<!-- ❌ Redundant -->
<img src="cat.jpg" alt="Image of a cat">
<!-- ✅ Better -->
<img src="cat.jpg" alt="Orange tabby cat sleeping">
Mistake 3: Generic alt text
<!-- ❌ Not helpful -->
<img src="chart.png" alt="Chart">
<!-- ✅ Descriptive -->
<img src="chart.png" alt="Revenue growth chart showing 30% increase year-over-year">
Mistake 4: Filename as alt
<!-- ❌ Useless -->
<img src="IMG_1234.jpg" alt="IMG_1234.jpg">
Mistake 5: Decorative images with alt text
<!-- ❌ Adds noise -->
<img src="border.png" alt="Decorative border">
<!-- ✅ Skip decorative -->
<img src="border.png" alt="">
Checking Compliance
Automated:
- axe DevTools: Checks alt presence
- WAVE: Shows alt text content
- BrowseCheck: Monitors alt text issues
Manual:
- Screen reader testing
- Image evaluation for appropriateness
- Context review
Checklist
- [ ] All images have alt attribute (even if empty)
- [ ] Informative images have descriptive alt text
- [ ] Decorative images have empty alt (
alt="") - [ ] Functional images describe action/destination
- [ ] Complex images have detailed descriptions
- [ ] Alt text is concise (≤125 characters when possible)
- [ ] Alt text doesn't include "image of" or "picture of"
- [ ] Alt text fits surrounding context
- [ ] CAPTCHAs have alternatives
- [ ] Tested with screen reader
Conclusion
WCAG 1.1.1 Non-Text Content requires text alternatives for all images and non-text content. Write concise, descriptive alt text for informative images, use empty alt for decorative images, and describe actions for functional images.
Alt text isn't just compliance—it's ensuring blind and visually impaired users understand your visual content. Tools like BrowseCheck help monitor alt text issues across your site, but manual review ensures alt text quality and appropriateness.
Good alt text benefits everyone: improves SEO, helps users on slow connections, and provides context when images don't load.