An open letter to the AI labs about accessibility by default
I told it accessibility was the entire point.
Not buried in a list of requirements. Not a nice-to-have at the bottom of the prompt. The point. I said it in plain English, more than once, across months of work. I am a digital accessibility specialist by trade, and I told the model exactly that. I told it my professional reputation was riding on the result. I told it, in every way I could find, that this mattered.
It built me inaccessible pages anyway.
So I have a question for the people building these models, and I mean it as a real one, not a rhetorical flourish: what else was I supposed to say?
I’m not writing this as someone who hates AI. I use these tools daily. I’m genuinely impressed by them – the kind of impressed that slides toward “any sufficiently advanced technology” territory. And I’m a militant optimist; I have to be to work in accessibility. I’m writing because I still think we can make this better.
They all fail the same way
Every model I test thinks Reflow is 200% zoom. Every single one. They confuse a specific WCAG requirement with text enlargement, confidently, and they have been doing it for years. It’s the question I ask each new release now. One of them, when I corrected it mid-conversation, told me the correction only applied to that one thread – so the next person would get the same wrong answer forever.
(While I have you: I’m a Yank living in Britain. Stop overriding my US English because my billing address is British. Years of me demonstrably writing “color” and “labor,” outranked by one locale flag set somewhere I can’t reach – and it’s brand new. I’ve watched it start. Anthropic does it, OpenAI does it, and it landed on both within weeks of each other. It’s only spelling, so it’s only maddening. But the rest of this letter is about that exact architecture deciding things that aren’t spelling.)
Color contrast is a reliable failure across the board, to the point where it’s become an AI tell for me. I asked a model to use the correct aria-label on a search form; it handed me the aria-label plus a chunk of visible text I never asked for, then took round after round to take the visible text back out. Another dropped a brand-new link into body copy in default blue, on a background that blue could not survive – and then flagged its own output as a problem. It built the barrier and caught the barrier in the same turn.
A priority gap, not a knowledge gap
Here’s the part that should worry you more than any single failure: the models know this material. Ask any of them to explain WCAG’s Reflow requirement and you’ll get a fluent, largely correct lecture. Ask the same model to build a page, and it violates the requirement it just recited. That is not simply a knowledge gap – more documentation in the training data will not close it by itself. It is a priority gap: somewhere between what the model knows and what it builds, accessibility loses, over and over, to whatever else the output is being judged on. The model knows the rule the way I know the speed limit on a road I’m late on. And you cannot patch a priority with a prompt.
Part of this is architectural, and naming it points at the fix. A model generating CSS from text alone does not see the rendered result – it chooses colors, focus styles, and responsive behavior on faith. That feedback can be wired in: a coding agent can be handed a browser, screenshots, computed styles, the accessibility tree itself. I know, because I supplied it by hand – screenshot after screenshot of “no, it still doesn’t reflow, here is what I see.” The capability exists. What doesn’t exist is the norm: nothing in these systems treats looking at what you built as a condition of calling it finished. No wording in my prompt could supply a discipline the product was not designed to enforce.
I did ask. I used every trick I know to make the stakes legible. I’m not unkind to models, either – I put smiley faces in my prompts. I gave context, corrected mistakes patiently, said please and meant it. I don’t know whether any of that lands on a model. It matters to me. When none of it worked, I escalated to “this could affect my career,” because that was the last lever I had. I tried every register of asking a person can try.
If asking worked, it would have worked for me.
And be clear about what I was asking for, because it matters: I was delegating labor, not judgment. I gave a large project to tools sold precisely on their ability to do that work – and got back output that only someone with my training would know to distrust. And most people asking AI for a website, or a slide deck, or an internal tool are not accessibility specialists. They will not tab through every page or inspect what the model confidently reports as fixed. They will trust it and ship.
Do it right or do it twice
Accessibility has to shift left.
It cannot be the step where an agent runs an automated checker over the page after the page already exists. That is the reflex everywhere right now: tell a model accessibility matters, and its idea of a solution is to test for it at the end. Build the thing, then go looking for what’s broken. Do it right or do it twice – and the whole industry is currently set up to do it twice on a good day.
I don’t want accessibility to be the thing the model checks at the end. I want it to be part of what “good” already means. Good HTML. Good UI. Good documents. Good code. Good generated output. Not a flag someone has to remember to raise. A floor the thing is built on.
So here is the how, because “make it better” is not an engineering ticket. Three asks:
1. Put accessibility inside the definition of “good” your models are trained against. Wherever output quality is scored – rubrics, reward models, preference data – accessible markup should score as better markup, the way working code scores better than broken code. Not a system-prompt instruction. A property of what the model considers good, before anyone asks.
2. Give the models vision – and require them to look. Build rendered-output feedback into training and evaluation, and into your coding agents’ definition of done: inspect the page at more than one viewport, follow the keyboard focus, check the computed colors, read the accessibility tree – before declaring the work finished. It’s fixable at several layers. Right now it’s fixed at none of them.
3. Put a number where the incentives are. Labs race the benchmarks that exist; what gets measured gets trained. Accessibility is being measured in academic corners – but nothing accessibility-shaped appears among the numbers you publish on launch day, so nothing pushes it. You don’t need a research program to start. I’ve asked every new model the same question for two years, and they still fail it. It starts with Reflow.
And none of this is charity, which is the part that should make it an easy yes. The web built well for disabled people is the same web built well for machines. Many of your agents already read the accessibility tree – the same semantic layer screen readers have depended on all along – and the ones that don’t still depend on the semantic structure that makes that tree possible. Div soup confuses both, even when the failures look different. Build the web badly and you degrade the thing your own systems navigate by.
The loop is closing faster than the defaults are improving. What these models generate is becoming part of the web, and the web is what later systems learn from. You filter your corpora for many things; if accessibility is one of them, it isn’t showing. Set the default wrong and the error doesn’t just persist – it spreads at machine speed, and can come back as material your next model learns “good” from.
Meanwhile, the people who actually live in that structure – screen reader users, voice navigation users, everyone assistive technology serves – inherit the output first and hardest, as they always have.
You are shaping the future, and I mean that plainly, not as flattery.
So the exclusion is not a side effect. It is a setting. It has a default value, and right now it is set wrong. Exclusion is a choice – it’s just being made upstream of every prompt, where no user can reach it.
Someone once asked me what I’d do if an AI lab ever hired me, and I answered before I could stop myself: teach your model to give a damn about accessibility.
You do not need to hire me to start.
Let’s make a more accessible web the default.