Business

The Accessibility Bugs That Get Written, Not Caught

Of the one million most-visited websites WebAIM tracked in its 2025 analysis, 94.8% had at least one detectable failure against WCAG (the Web Content Accessibility Guidelines, the baseline standard most digital accessibility law points back to), adding up to more than 50 million distinct errors across the sample, an average of 51 per page. Missing form labels, empty buttons, and low-contrast text that a screen reader cannot parse correctly are structural defects. Most of them trace back to the code a developer wrote during initial development, well before any post-launch content update.

Six failure types account for 96% of everything WebAIM found: low contrast text, missing image alt text, unlabeled form inputs, empty links, empty buttons, and missing document language. None of them require unusual engineering skill to fix. A labeled input takes one HTML attribute. A button with accessible text takes one additional class. The failures persist because nothing in the development process checks for them before code ships.

Where CI/CD pipelines stop short

Most continuous integration pipelines already run lint checks, unit tests, and performance benchmarks on every commit. Accessibility checks are rarely part of that list. A developer at a typical organization first encounters an accessibility problem during an annual audit or a legal demand letter, well after the affected code has been in production.

A W3C working group studying accessibility conformance challenges named the mechanism directly: the absence of “accessibility prioritization, training, and integration throughout the design, development, and maintenance processes” is a root cause of persistent WCAG failures. Accessibility was never built into the pipeline, so it never became part of the habit.

Two reasons developers don’t fix what they know about

Ask a developer why accessibility issues keep showing up in their codebase and the answer usually splits two ways. Either no one told them it was their job, or they know but have no tooling in their workflow to help.

The ownership question is structural, not personal. When accessibility reviews happen, they typically land with QA teams, compliance specialists, or outside consultants, rarely the engineer who wrote the component in the first place. A ticket gets filed after the component has already shipped, sometimes after the original developer has moved to a different project entirely. Accessibility debt accumulates the way any technical debt does, except it also decides whether someone using assistive technology can use the product at all.

The tooling gap compounds the ownership gap. Vue, Angular, and Bootstrap all produce pages with more detectable errors on average than the broader WebAIM sample; React, despite its reputation, actually runs below that average, which suggests framework choice matters less than the discipline applied on top of it. A developer building a carousel with Swiper or a lightbox with FancyBox inherits accessibility barriers by default, regardless of how carefully they follow every other best practice on the team.

What waiting actually costs

A 2025 analysis by Laura Wissiak, a CPACC-certified accessibility practitioner, put a number on the gap: fixing an accessibility bug during the testing phase costs roughly 30 times more, on average, than building it accessibly the first time. A developer can write an accessible component in about the same time as an inaccessible one. The 30x multiplier comes from what remediation requires afterward: finding the issue, documenting it, triaging it, assigning it, branching, rebuilding, testing again, and redeploying, all for a fix that could have been a single attribute the first time around.

At enterprise scale the math gets worse. A single inaccessible button baked into a shared design system can propagate across every product that uses it. One component-level oversight becomes hundreds of individual fixes.

Moving the check earlier

The alternative is treating accessibility as a build-time quality gate instead of a post-launch audit item, the same way type checking and code coverage already work in most pipelines. That means three things happening together: automated accessibility tests running against rendered code on every commit, so a violation shows up as a failing check in the same pull request as a broken unit test; guidance surfacing inside the IDE while a component is still being written, the same way a missing variable declaration would; and findings routing directly into Jira, Asana, or Azure Boards so an accessibility fix joins the same backlog as everything else the team is already tracking.

accessFlow, accessiBe‘s developer platform, is built around exactly that structure. Its SDK runs automated accessibility testing inside CI/CD pipelines and flags WCAG violations as part of the existing build process. A Model Context Protocol integration surfaces real-time guidance inside the IDE as code gets written. Findings flow into Jira, Asana, and Azure Boards automatically. An auto-resolve capability surfaces repetitive, pattern-based issues with a suggested fix, so developers can clear them quickly and put their attention on the semantic and interaction-pattern problems that still need a human eye. For teams that also want runtime coverage while this structural work is underway, accessFlow pairs with accessWidget, which rescans a live site every 24 hours and applies adjustments in real time.

Seven years of WebAIM data show why the structural fix matters more than another audit. Home page element counts rose 61% between 2019 and 2025. ARIA attribute usage per page is five times higher than it was six years ago. Over that same stretch, WCAG failure rates only dropped modestly, from 97.8% of pages in 2019 to 94.8% in 2025. Pages are getting more complex and picking up more accessibility tooling, and the failure rate barely moves, because the tooling keeps arriving at the wrong point in the process. Catching a bug while a developer is still writing the component takes minutes. Catching it after launch costs an estimated 30 times more. For an engineering team shipping continuously, that gap is where accessibility debt either gets paid down as it’s created, or never gets paid down at all.