
AI code generators are fast. They're also consistently terrible at accessibility. You ship an app built by Claude or Cursor that looks perfect on your monitor, then a user on a screen reader bounces off within seconds. The AI never learned accessibility rules because the training data was full of inaccessible code, and it has no visual impairment to make accessibility real.
Photo by Sanket Mishra from Pexels
- AI-generated code skips accessibility because the model has no incentive to include it and limited accessibility-focused training data.
- Screen reader incompatibility, missing ARIA labels, poor keyboard navigation, and color contrast failures are the four most common issues.
- Inspect and test your app manually (text at 200%, keyboard-only, screen reader) before launch, not after.
- Use a checklist, automated tools (axe, Lighthouse), and involve actual disabled users in testing.
AI-generated apps inherit a blind spot. The model doesn't see accessibility as a requirement, it sees it as optional polish that isn't baked into the fastest code path. When you ask Claude to build a React component, it returns working JSX. When you ask it to build an accessible React component, you get the same JSX most of the time, because accessibility isn't visible in the rendered output. It's a contract between the code and assistive technology that the AI has never negotiated.
This means accessibility failures aren't a bug in the AI. They're a feature of how these models were trained. Your job is to close the gap by building accessibility into your workflow the same way you'd build in testing or security.
Why this matters now
The scale of the problem is larger than most founders realize. One in seven people globally experience some form of disability that affects their ability to use digital products. That's not a niche market segment, it's one-seventh of your potential user base. Add legal liability (WCAG lawsuits are increasing), and accessibility goes from nice-to-have to necessary.
AI-built apps amplify the problem because they're shipped faster, tested less rigorously, and usually by people who don't know what to look for. A human developer writing accessibility-ignorant code is a choice. An AI writing it is a systemic failure. The difference is you can fix the system.
Common mistakes and misconceptions
Mistake 1: "We'll fix accessibility later."
Accessibility baked into the design and code is cheaper to build than retrofitting it. Adding ARIA labels after shipping is possible but fragile. Rebuilding a color contrast system because you picked the wrong palette on launch is painful. Prevention beats remediation.
Mistake 2: "Accessibility is only for screen reader users."
Wrong. Accessibility helps people with motor disabilities (keyboard navigation), cognitive disabilities (clear labels and structure), low vision (color contrast and text scaling), color blindness, hearing impairments, and aging users. You're not building for a disability type, you're building for humans with varied needs.
Mistake 3: "Automated testing catches accessibility issues."
Automated tools (axe, Lighthouse) catch maybe 30% of real accessibility problems. They find missing alt text and low contrast ratios. They miss logical tab order, heading hierarchy that makes sense to humans, and whether a screen reader user can actually understand what they're reading. Automation is a safety net, not a substitute for real testing.
Mistake 4: "The AI will handle it if I ask nicely."
Asking Claude to "make it accessible" in a prompt is like asking it to "make it secure." The model will add some ARIA attributes and call it a day. You need to specify exactly what you want: semantic HTML, keyboard support, ARIA roles where needed, contrast ratios. Even then, you must verify the output.
Step-by-step approach
1. Start with semantic HTML
The foundation of accessible code is semantic HTML. Don't ask the AI to build custom components when native HTML elements exist. A button should be When you prompt the AI, lead with structure: "Build a form using native HTML form elements. Include labels for every input." This shapes the output before the AI goes off track. Why it matters: Screen readers announce semantic elements correctly. A native button tells the user it's clickable; a div needs explicit ARIA roles. Keyboards automatically focus on semantic form inputs; custom components need JavaScript listeners you probably forgot to add. Close your mouse and use the Tab key to navigate your app. Every interactive element should be reachable. Nothing should trap focus. The tab order should match the visual reading order. This is where accessibility gets real. Download NVDA (free, Windows/Linux) or JAWS (paid, industry standard). Use Safari on macOS with VoiceOver (built-in). Chrome with screen reader is okay for quick tests. Start simple: load your app and listen. What does the screen reader announce? Does it make sense? Can you complete a flow (sign up, make a purchase, submit a form) without looking at the screen? This approach separates visual testing from assistive technology testing. You find obvious gaps (missing labels, broken contrast) first, then move to the harder work of making sure screen reader navigation makes sense. Hire a disabled tester or use a service like Access Works. A screen reader user will catch things you miss. They'll tell you your heading hierarchy is confusing even if it's technically correct. They'll find the interaction pattern that works in theory but feels broken in practice. This costs money, but it's worth it. User testing is the only way to know if your app is actually accessible. Automated checks and your own testing catch problems. Real users find the issues you didn't know existed. Don't just ask for "accessible code." Be specific. Here's a template that works: This primes the AI to include accessibility from the start rather than asking it to retrofit later. The gap between automated detection and real problems is significant. Sixty-five percent of accessibility issues require human review to catch. Automated tools find the easy wins; the rest require actual testing with assistive tech or involving disabled users. 1. Missing or wrong ARIA labels The AI adds Fix: Review every ARIA attribute. If you can't explain what it does, it's wrong. 2. Keyboard navigation broken A custom dropdown component looks perfect in the browser. Tab doesn't open it. Arrow keys don't work. The AI built the visual component but didn't wire up keyboard events. Fix: Test keyboard-only before launch. If Tab doesn't reach it or arrow keys don't work, it's broken. 3. Color contrast too low The AI picks a light gray text on white background because it looks elegant. It fails the WCAG AAA contrast ratio (7:1). Even AA (4.5:1) is hard to read for many people. Fix: Run a contrast checker. Aim for 4.5:1 minimum for normal text, 3:1 for large text. Make it a build step, fail the deploy if contrast is too low. 4. Heading hierarchy is broken The AI uses Fix: Check your heading structure. Always go h1 > h2 > h3, never skip levels. One h1 per page. The best time to catch accessibility failures is before they ship. Build accessibility checks into your pull request process. Use axe or similar tools as a pre-commit hook. Fail the build if contrast ratios are below 4.5:1. Make it hard to ship inaccessible code. This dashboard shows the typical pre-launch checklist. Early items (semantic HTML, color contrast, keyboard navigation) are your responsibility and the AI's responsibility. Later items (screen reader testing, user testing) require human involvement. The shift from automated to manual testing is where you catch 60+ percent of real accessibility problems. Your progress is saved automatically in your browser. Don't just ask for "accessible code", the AI interprets that weakly. Specify exactly what you want: semantic elements, keyboard support, ARIA where needed. The gap between fast and accessible narrows every time you build accessibility into your workflow instead of bolting it on afterward. AI makes shipping speed possible. Your job is to make sure that speed doesn't come at the cost of excluding 14% of the world. Test early, test often, and involve actual disabled users before launch. That's the difference between an app that works for everyone and one that works for most people. Learn to build software faster with AI assistance using the Vibe Coding Bible., not , not . Navigation should be , not a styled 2. Test with keyboard-only navigation
The AI almost always misses keyboard support on custom components. A styled dropdown looks fine on screen but fails Tab navigation tests.
3. Run automated checks
Use Lighthouse (in Chrome DevTools), axe DevTools (browser extension), or Wave (accessibility checker). Run these early and often. They catch low-hanging fruit:
These tools don't require expert knowledge. They just flag the obvious. Fix them all before manual testing.
4. Test with a screen reader
"Start inspecting visually (for example, with text scaled to 200%), and afterwards proceed with testing using a screen reader."
>, Practical guide to mobile accessibility testing
5. Involve actual disabled users
Tools and workflows that help
Automated testing tools:
Screen readers:
Browser extensions for manual checks:
Prompt engineering for AI:
"Build a React form with email and password inputs. Use semantic HTML form elements. Include visible labels for each input with htmlFor attributes. Add aria-describedby for helper text. The form should work with keyboard navigation (Tab between fields, Enter to submit). Test focus states."
Four most common AI-generated accessibility failures
. The arrow alone tells you nothing. A screen reader user hears "arrow button" and has no idea what it does. Correct: ., then , skipping . A screen reader user navigates by headings and gets confused. Headings aren't decorative, they're the outline of your content.
Integrating accessibility into your workflow
This adds maybe 30 minutes per feature the first few times. After that, it becomes muscle memory and moves faster.
AI-Generated App Accessibility Verification
FAQ
Frequently Asked Questions
Additional Resources
What does your current accessibility testing workflow look like, and where do you think AI-generated code is most likely to fail it?
Ready to Master Vibe Coding?