Back to Blog

The Developer's Accessibility Checklist for 2026

February 25, 20267 min read

Accessibility standards can feel overwhelming when you first encounter them. WCAG 2.2 contains dozens of success criteria across three conformance levels, and the technical language can be impenetrable for developers who just want to build something that works for everyone.

This guide distills the requirements into a practical checklist. It covers the WCAG 2.2 AA violations that appear most frequently in real-world applications — especially those built with AI coding tools — and explains each one in plain language with concrete fixes.

Understanding WCAG 2.2 AA

The Web Content Accessibility Guidelines are organized around four principles, often abbreviated as POUR:

Perceivable. Information and interface components must be presentable in ways that all users can perceive. This means providing text alternatives for non-text content, captions for video, and sufficient visual contrast.

Operable. Interface components and navigation must be operable by all users. This means keyboard accessibility, sufficient time to interact with content, and no content that could cause seizures.

Understandable. Information and interface operation must be understandable. This means readable text, predictable behavior, and help with input errors.

Robust. Content must be robust enough to be interpreted reliably by a wide variety of user agents, including assistive technologies. This means valid, semantic markup with proper ARIA usage.

WCAG 2.2, the current version, added several new success criteria focused on mobile interaction, cognitive accessibility, and authentication. Level AA is the standard that most legal frameworks reference and that most organizations target.

The Top 10 Most Common Violations

These are the violations that appear most frequently across automated scans of production websites. If you fix nothing else, fix these.

1. Missing Image Alternative Text

What it means: Every element needs an alt attribute. Informational images need descriptive text. Decorative images need an empty alt="" attribute.

Why AI gets this wrong: AI generates images with no alt attribute at all, or with meaningless values like alt="image" or alt="screenshot".

Fix:

<!-- Bad -->
<img src="chart.png">
<img src="decoration.svg" alt="image">

<!-- Good -->
<img src="chart.png" alt="Revenue growth chart showing 40% increase Q1 to Q4 2025">
<img src="decoration.svg" alt="">

2. Missing Form Input Labels

What it means: Every form input needs a programmatically associated label. Placeholder text is not a label.

Why AI gets this wrong: AI relies on placeholder attributes for visual context and skips elements entirely.

Fix:

<!-- Bad -->
<input type="email" placeholder="Enter your email">

<!-- Good -->
<label for="email">Email address</label>
<input type="email" id="email" placeholder="you@example.com">

3. Insufficient Color Contrast

What it means: Normal text needs a contrast ratio of at least 4.5:1 against its background. Large text (18pt or 14pt bold) needs at least 3:1.

Why AI gets this wrong: AI prioritizes aesthetic color palettes over contrast compliance. Light gray text on white backgrounds is extremely common in AI output.

Fix: Use a contrast checker tool to verify every text-background combination. Common failures include light gray body text, placeholder text color, and text over background images without overlays.

4. Empty Links and Buttons

What it means: Every link and button must have an accessible name — either from text content, an aria-label, or an aria-labelledby reference.

Why AI gets this wrong: Icon-only buttons are generated without any accessible name. The visual icon communicates purpose to sighted users, but assistive technology announces only "button" or "link."

Fix:

<!-- Bad -->
<button><svg>...</svg></button>

<!-- Good -->
<button aria-label="Close dialog"><svg>...</svg></button>

5. Missing Document Language

What it means: The element must have a lang attribute specifying the page language.

Why AI gets this wrong: This is simply omitted from generated boilerplate. It is a one-line fix.

Fix:

<html lang="en">

6. Broken Heading Hierarchy

What it means: Headings should follow a logical hierarchy. Do not skip levels (for example, jumping from

to

).

Why AI gets this wrong: AI selects heading levels based on visual size rather than document structure.

Fix: Use headings to create an outline of your content, not to control text size. Use CSS for sizing.

7. Missing Skip Navigation Link

What it means: Pages with repeated navigation should provide a mechanism to skip directly to main content.

Why AI gets this wrong: Skip links are almost never generated by AI coding tools.

Fix:

<a href="#main-content" class="sr-only focus:not-sr-only">
  Skip to main content
</a>

8. Keyboard Inaccessible Interactive Elements

What it means: All interactive elements must be reachable and operable with a keyboard alone. Custom components need proper focus management.

Why AI gets this wrong: AI uses

elements with click handlers instead of semantic