WCAG Accessibility Compliance for Web Applications

Veld Systems||6 min read

Accessibility is not a feature you add at the end. It is a fundamental quality of well built software. Despite this, we regularly encounter applications, some handling millions of users, that fail basic accessibility checks. Buttons without labels, images without alt text, forms that cannot be completed with a keyboard, color contrast ratios that make text invisible to anyone with low vision.

The Web Content Accessibility Guidelines (WCAG) provide a clear, testable standard for what accessible software looks like. Most organizations that need to comply are targeting WCAG 2.1 Level AA, which is the standard required by Section 508 (federal government), the ADA (for private businesses in the US), the European Accessibility Act, and an increasing number of state laws.

This post is a practical guide for development teams. Not a legal overview, not a theoretical framework, but a concrete walkthrough of what AA compliance requires and how to build it into your workflow.

The Four Principles of WCAG

WCAG is built on four principles, abbreviated as POUR. Every guideline maps back to one of these.

Perceivable: Information and interface components must be presentable in ways users can perceive. This covers text alternatives for non text content, captions for video, sufficient color contrast, and the ability to resize text without breaking the layout.

Operable: Interface components and navigation must be operable. Users must be able to use the interface with a keyboard alone, have enough time to read and interact with content, and the interface must not cause seizures or physical reactions.

Understandable: Information and the operation of the interface must be understandable. Text must be readable, the interface must behave in predictable ways, and users must receive help avoiding and correcting errors.

Robust: Content must be robust enough to be interpreted reliably by a wide variety of user agents, including assistive technologies. This primarily means using proper semantic HTML and following established web standards.

The Most Common Accessibility Failures

After auditing dozens of web applications, we have found that the same failures come up repeatedly. Fixing these 10 issues resolves the majority of accessibility problems.

1. Missing or inadequate alt text on images. Every meaningful image needs a descriptive alt attribute. Decorative images should use an empty alt attribute (alt="") so screen readers skip them. The alt text should describe the function or content of the image, not just "image" or "photo."

2. Insufficient color contrast. WCAG AA requires a contrast ratio of at least 4.5:1 for normal text and 3:1 for large text (18px bold or 24px regular). We see this violated constantly with light gray text on white backgrounds, or colored text on colored backgrounds. Tools like the WebAIM Contrast Checker make this trivial to verify.

3. Forms without proper labels. Every form input must have a programmatically associated label element. Placeholder text is not a label. Screen readers cannot consistently read placeholder text, and it disappears once the user starts typing. Use a visible `

4. Missing keyboard navigation. Every interactive element must be reachable and operable with the keyboard alone. This means `Tab` to move between elements, `Enter` or `Space` to activate buttons, arrow keys for menus, and `Escape` to close modals. Custom components like dropdowns, date pickers, and carousels are the most frequent offenders.

5. Focus indicators removed or hidden. CSS resets that include `outline: none` on interactive elements break keyboard navigation. Users need to see where focus is. If you replace the default outline, replace it with a visible alternative that meets contrast requirements.

6. Dynamic content not announced. When content changes on the page, like a form validation error appearing, a notification popping up, or search results loading, screen readers must be informed. Use ARIA live regions (`aria-live="polite"` or `aria-live="assertive"`) to announce changes.

7. Missing page structure and headings. Screen reader users navigate by headings. Your pages need a logical heading hierarchy: one `

` per page, followed by `

` sections, `

` subsections, and so on. Do not skip heading levels. Do not use headings for visual styling alone.

8. Links and buttons without descriptive text. "Click here" and "Read more" tell a screen reader user nothing about where the link goes. Every link should make sense out of context. Instead of "Click here to view pricing," use "View our pricing plans."

9. Missing language attributes. The `` element needs a `lang` attribute (e.g., `lang="en"`) so screen readers use the correct pronunciation. If sections of the page are in a different language, those sections need their own `lang` attribute.

10. Inaccessible modals and dialogs. When a modal opens, focus must move to the modal. While the modal is open, `Tab` should cycle only within the modal (focus trapping). When the modal closes, focus must return to the element that triggered it. Most modal implementations get at least one of these wrong.

Building Accessibility Into Your Development Process

Retrofitting accessibility is expensive. In our experience, fixing accessibility after a build is complete costs 3 to 5 times more than building it in from the start. Here is how we approach it on projects we ship.

Use semantic HTML first. Native HTML elements like `

Ready to Build?

Let us talk about your project

We take on 3-4 projects at a time. Get an honest assessment within 24 hours.