Marcelo Paiva

A young man holding a stylus over a tablet beside an older woman in glasses, both looking down.Meant to show: A junior designer learning WCAG the way people learn a language: from someone pointing at the one line that matters, not from reading the dictionary.

How do we learn a spec nobody reads?

Nobody learns a language by reading its dictionary, and I think that explains most of what is wrong with how we teach accessibility.

Listen to this essay

6 min listen · 4 min read · Read by a synthetic voice (af_heart, made with Kokoro), from the essay’s own words.

Most designers open WCAG 2.2 maybe twice a year, the way we open a tax code. That's no complaint about the document, which is free, thorough and carefully written.

But it's a dictionary, and nobody learns a language by reading its dictionary. We learn one by hearing words often enough that they become familiar, and we only look them up later, when we need to be exact.

Our field has written an excellent dictionary, and offers almost no exposure. And the consequences of that fall on other people.

You cannot look up what you have never heard of

Accessibility knowledge is lookup knowledge, and lookup only works if we already know there's something to look up.

We can't search for 1.4.11 Non-text Contrast if it has never occurred to us that non-text contrast is a thing with a number.

We won't check 4.1.2 Name, Role, Value if "this has an accessible name" is a sentence we've never heard.

So the criterion sits in the document, correct and unread, and a control ships with no name on it.

The person who meets that control isn't confused about the spec. They're a screen reader user who hears "button", with no hint of what it does, and they leave.

So I don't think the failure is usually refusal. We both believe UX professionals do not intentionally exclude people from their work.

What goes wrong is that the thought, wait, I think there is a rule about this, never arrives, because nothing in the working day ever put the phrase in front of us.

Training is supposed to take care of that. Most of us have sat through an accessibility workshop, and some were excellent.

But think about a Tuesday four months later. Three things are due, and a decision about a tooltip goes past in eleven seconds. Nothing from the workshop is in those eleven seconds. It stayed in a room in April.

Training is good at showing that the field exists, and that these are real people with real needs. But what fires at the moment of a decision is vocabulary, and vocabulary comes from repetition, in context. A workshop once a year is an event, while a phrase seen three hundred times becomes vocabulary.

Recognition comes from repetition

It comes from seeing the same thing over and over, in the places we already look.

That's the bet I made with a11y-tips-statusline (opens in a new tab). It puts all 86 WCAG 2.2 success criteria, Level A, AA and AAA, in the Claude Code statusline, and a new one appears every thirty seconds. There's a /wcag command to search them, and it takes one line to install.

I want to be exact about how modest the claim is. Reading a criterion while a build runs doesn't make anyone a practitioner, any more than walking past a fire extinguisher makes us firefighters.

What it does is make a phrase familiar enough that we recognize it later, when it matters. That's the whole job.

It's my most-starred repository, and I read that as a fact about appetite, not about outcomes. This field is full of tools whose authors let the first stand in for the second.

Stars are measurable. Whether anyone shipped a more accessible interface because a criterion went past at the right moment is not. I haven't measured it, so I don't know.

Two details in the tool do apply more widely, and both are about how a thing fails.

The first: the tips wrap to the width of the statusline, so they stay clear of the messages the editor writes in the same space. That sounds unremarkable, until you watch two systems write over each other in a space neither controls.

The second matters more. When the terminal is narrower than 120 columns, the tool doesn't cut the tip off. Instead, it replaces it with a short prompt to widen the window.

Most statusline tools cut off, because that's the obvious thing to do, and I think it's almost always wrong. A line that's cut off silently reads as a complete one, so half a sentence arrives with no sign there was ever more.

An accessibility tool that drops information on a narrow screen is failing the people it exists for. It's also doing the very thing it's meant to teach us not to do.

That's the kind of default I keep finding: one nobody examined, in a category whose conventions are still soft.

The vocabulary belongs where the work is

The tool matters less than the move: stop treating accessibility knowledge as something we go and fetch.

  • Put the vocabulary where the work already is. That could be a statusline, a repository README, the bottom of a design file or a rotating item in a team channel.
  • Use the numbers. 1.4.3 Contrast (Minimum), 2.4.7 Focus Visible, 4.1.2 Name, Role, Value. A shared identifier is something a colleague can look up and an agent can be pointed at. "It's not accessible" is an opinion someone must take on trust.
  • Make one criterion unavoidable this quarter. Pick the one your team fails most, and put it somewhere nobody can miss it.

None of that is expensive, which is why I'm suggesting it. It's cheap to change now. Later, it becomes an audit finding.

The dictionary is already written, and it's free.

About the drawing

The drawing for this piece was generated, not chosen. Hashing the piece’s name fixes one point on the color wheel; the other two follow from it. The same name always gives the same three colors.

#d45dd3#81a054#5dd89c

How this drawing was made

The line under the drawing marked “Meant to show” is written by a person, not the model. A generated drawing keeps what is large and loses what is small, so the detail that decides who someone is can go missing, and a picture only reaches people who can see it. Where the drawing and that line disagree, the line is the intent.

Or press the left arrow and the right arrow.

An essay

This is an article in a magazine: a drawing at the top, then the essay, read straight down in one column.

From top to bottom

  1. At the top, the site header: my name, which goes home, then links to Writing, Work, Signal, Tools and Resume, then Settings, where you choose the drawings, light or dark, and movement.
  2. The essay’s drawing, with a line under it on what it was meant to show.
  3. The date, the title, and a one-paragraph summary.
  4. A Listen control: play the essay read aloud by a synthetic voice, with buttons to go back or forward 15 seconds, a position slider and a speed choice. It shows how long it takes to listen and to read.
  5. The essay, in sections with their own headings. Some have pictures, videos, lists or diagrams along the way.
  6. About the drawing: how the drawing was made, and a link to more on that.
  7. Links to the newer and older essay. The left and right arrow keys go there too.
  8. At the bottom, the footer: a note on how this site is built, links to Illustrations, Pens, Concepts and Accessibility, this Describe this page button, then GitHub, LinkedIn and email.

What you can do here

Read the essay.