Web Accessibility: A Practical WCAG Guide
Accessibility is not a checklist you bolt on at the end, it is a way of building. Here is how Innovation T approaches WCAG in real projects, with concrete fixes and tradeoffs.
By Innovation T Team
Most teams discover accessibility the hard way: a legal notice, a lost enterprise deal, or a user who simply cannot complete checkout. By then the fixes are expensive and the reputation cost is already paid. At Innovation T we treat accessibility as an engineering discipline, not a compliance chore, and this guide is the working knowledge we bring to real projects.
The good news is that most of what makes a site accessible also makes it faster, cleaner, and easier to maintain. Semantic markup, predictable focus, and clear labels are just good frontend engineering. Let us walk through what WCAG actually asks for and how to deliver it.
What WCAG is, in plain terms
WCAG stands for Web Content Accessibility Guidelines, published by the W3C. As of 2026 the stable, widely referenced version is WCAG 2.2, and WCAG 3.0 is still a working draft that signals where things are heading but is not yet something you conform to. When a contract, a government tender, or the European Accessibility Act asks for compliance, they almost always mean WCAG 2.1 or 2.2 at level AA.
The guidelines are organized around four principles, often remembered as POUR:
- Perceivable: users can perceive the content, for example through text alternatives, captions, and sufficient contrast.
- Operable: users can operate the interface, including by keyboard alone, without time traps.
- Understandable: content and behavior are predictable, with clear labels and helpful error messages.
- Robust: the markup works reliably across browsers and assistive technologies.
Each principle breaks into success criteria rated A, AA, or AAA. AA is the practical target for almost everyone. AAA is worth reaching for on specific criteria but is rarely mandated site wide.
The criteria that matter most in practice
You do not need to memorize all of WCAG to make a real difference. In our experience, a handful of issues account for the large majority of what automated scans and real users actually hit. Fix these first.
Color contrast
Text needs enough contrast against its background: a ratio of at least 4.5 to 1 for normal text and 3 to 1 for large text. Low contrast is the single most common failure we find on audits, and it is often invisible to designers with good eyesight on a bright laptop. Bake contrast checks into your design tokens so a failing combination never ships in the first place.
Watch the tradeoff: brand palettes sometimes lean on light gray text for a modern look. You can keep the aesthetic by reserving low contrast for decorative, non essential elements and using compliant values for anything a user must read.
Keyboard operability
Every interactive element must be reachable and usable with the keyboard alone. Try it yourself: put the mouse away and tab through a key flow. You are looking for three things.
- Everything focusable is reachable in a logical order.
- The focus indicator is always visible, never removed with
outline: noneand left unreplaced. - Focus never gets trapped, except intentionally inside a modal that you can escape.
Custom components are where this breaks. A div styled to look like a button is invisible to the keyboard and to screen readers. Use a real button, or if you must use a generic element, add role, tabindex, and key handlers, which is strictly more work for a worse result.
Forms and labels
Forms are where accessibility failures cost real money because they block conversions. Associate every input with a visible <label>, describe errors in text rather than color alone, and connect error messages to their field with aria-describedby. Do not disable the submit button in a way that hides why it is disabled, since a user with a screen reader may never learn what is missing.
Images and media
Every meaningful image needs an alt attribute that conveys its purpose, not a literal description of pixels. Decorative images should carry an empty alt="" so screen readers skip them. Video needs captions, and audio heavy content benefits from a transcript. These also help SEO, which we cover in our guide on SEO that moves revenue.
Semantic HTML beats ARIA almost every time
The first rule of ARIA is: do not use ARIA if a native element will do. A native <button>, <nav>, <main>, <input>, or <details> comes with keyboard behavior, focus handling, and screen reader semantics for free. ARIA only adds a description of behavior, it does not add the behavior itself, so a div role="button" still needs you to wire up Enter and Space by hand.
Reach for ARIA when you genuinely build something the platform does not offer, such as a custom combobox, a tab set, or a live region that announces asynchronous updates. Even then, follow the established patterns in the WAI-ARIA Authoring Practices rather than inventing your own. Bad ARIA is worse than none, because it actively lies to assistive technology about what an element is.
A quick heuristic we use on reviews: if a component has more role and aria-* attributes than it has real functionality, something has gone wrong.
Testing: automated, manual, and human
No single method catches everything. Automated tools reliably find perhaps a third to a half of issues in our experience, and they are excellent at the mechanical checks. The rest needs a human. Here is the layered approach we use.
- Automated in CI: run axe-core or Lighthouse against key pages on every build so regressions fail the pipeline, not the customer. This is the same shift left mindset we apply to security, and it pairs naturally with a strong security audit for your website.
- Keyboard pass: manually tab through every critical flow. This is fast, free, and catches what scanners cannot.
- Screen reader pass: test with NVDA on Windows, VoiceOver on macOS and iOS, and TalkBack on Android. Different tools expose different bugs.
- Zoom and reflow: zoom to 200 percent and 400 percent, and check the layout still works at a narrow viewport without horizontal scrolling.
- Real users: where budget allows, testing with people who rely on assistive technology surfaces issues no checklist predicts.
An accessibility checklist you can ship with
Use this as a pre release gate. It is deliberately short so teams actually run it.
- Every page has one
<h1>and a logical heading order with no skipped levels. - All interactive elements are reachable and usable by keyboard, with a visible focus ring.
- Text contrast meets 4.5 to 1, and large text meets 3 to 1.
- Every input has an associated visible label, and errors are described in text.
- Images have appropriate
alttext, decorative images usealt="". - Video has captions and, where relevant, a transcript.
- The page has a correct
langattribute and a descriptive, unique<title>. - Content and layout survive 200 percent zoom without loss of function.
- Motion respects
prefers-reduced-motionfor users who get motion sick. - An automated scan passes in CI on the primary templates.
Where accessibility fits in a modern architecture
Accessibility is easiest when it lives in shared components rather than being reapplied page by page. A well built design system encodes contrast ratios in tokens, ships a single accessible button and input, and makes the wrong choice hard to make. This is one more reason the component and service boundaries you choose matter, a theme we explore in monolith to microservices.
Server rendered and progressively enhanced pages tend to be more robust than heavy client side apps, because content exists in the markup before JavaScript runs. If your framework hydrates late, make sure the pre hydration state is still readable and that focus is managed correctly after client side navigation, which is a common and easily missed failure in single page apps.
How Innovation T can help
Accessibility is not a one time cleanup, it is a property you design in and defend over time. Our teams build it into the work from the first wireframe: accessible design systems, semantic and performant frontends, automated checks in your pipeline, and full WCAG 2.2 AA audits with a prioritized, plain language remediation plan rather than an intimidating spreadsheet.
If you are launching something new, we make sure it ships accessible. If you have an existing product with legal or procurement pressure, we audit it, fix the highest impact issues first, and set up guardrails so you do not regress. Explore our services to see how UI/UX design, web development, and software engineering come together, and get in touch to talk through your specific goals. Building for everyone is not a constraint on good work, it is what good work looks like.
done
Ready to build with Innovation T?
Whether it is security, growth or engineering, our team can help you ship it well.