The One Accessibility Fix With the Highest ROI
If you fix only one thing, make your forms work: label every field and announce every error.
People who ask me where to start with accessibility usually expect a long answer, and are suspicious when they get a short one. The short answer is: fix your forms. Specifically, make sure every field has a real label, and make sure that when something goes wrong, the user is told what and where in a way that doesn’t depend on eyesight. If you do nothing else, do this. It is the highest-return accessibility work I know of, and I want to explain why, because the reasoning matters more than the recipe.
Start with where the money is. Almost every website that makes money makes it through a form. Checkout is a form. Signup is a form. The lead-gen contact page is a form. Booking, quoting, subscribing, applying: forms all the way down. Everything else on the site exists to walk people to the form. This means a defect anywhere else costs you friction, but a defect in the form costs you the whole transaction. The visitor who couldn’t read your blog post comfortably might still buy. The visitor who couldn’t complete your checkout definitely didn’t. So if accessibility problems are unevenly costly, and they are, the form is where the cost concentrates. Return on investment is impact divided by effort, and no other spot on your site has this much impact packed into this few screens.
Now the effort side, and this is what makes the ROI absurd: the fixes are among the easiest in all of web development. The label problem first. A screen reader user landing on an input needs to hear what the field is for. That information comes from a label element programmatically tied to the input, which in HTML is one attribute: the label’s for attribute pointing at the input’s id, or the input nested inside the label. That’s the entire fix. Yet an enormous number of forms skip it, usually because the designer put the field name inside the box as placeholder text and it looked clean. Placeholders are not labels. Some screen readers treat them inconsistently, and for everyone the text vanishes the moment you start typing, which is also why sighted users get halfway through a long form and can no longer remember which box was email and which was username. Visible labels tied to their inputs fix both audiences with one line of markup per field.
Then the error problem, which is where the real abandonment happens. Picture the failure from the user’s side. They fill the form, press submit, and the page comes back. Somewhere, a field has turned red. If they can’t perceive red, or can’t see at all, what happened? Nothing, as far as they can tell. They submitted; the site didn’t respond. Maybe they try again. Then they leave, certain your site is broken, and from their side of the screen they’re right. The fix has two parts, both plain. First, never encode an error only in color: say what’s wrong in text, next to the field, in words like “Enter a valid email address,” and tie that message to the input so it’s read aloud when the field gets focus, which is what the aria-describedby attribute is for. Second, when validation fails, make sure the failure is announced, either by moving keyboard focus to a summary of the errors or to the first invalid field. A form that fails silently isn’t validating. It’s discarding customers and calling it validation.
There’s a testing method that costs nothing and fits in five minutes. Take your most important form. Unplug the mouse, or just don’t touch it. Tab through every field and confirm each one, on focus, tells you what it wants, ideally with a screen reader on, but even the visible labels alone will expose the placeholder-only fields. Then submit the form with deliberate garbage and ask: without color, without pointing, how would I know what went wrong and where? If you can’t answer, you’ve found the leak. I keep calling it a leak because that’s the right picture: forms with these defects lose people continuously, invisibly, and the loss shows up in analytics as ordinary abandonment, indistinguishable from people who wandered off. Nobody files a bug report against a form they couldn’t perceive failing. They just go to a competitor whose form worked.
When GazeSite scans a site, form findings get heavy weight in both the accessibility grade and the conversion grade, and that double appearance is the point of this whole essay. Form accessibility isn’t a compliance line item that happens to live near the money. It is conversion work. The same missing label that stops a blind user cold also slows down the sighted user in a hurry on a phone in the sun. The same silent validation that strands a screen reader user also confuses the distracted one who didn’t notice the red border. Fixing forms for the people the defects exclude completely also fixes them for the people they merely annoy, and the second group is everyone.
I’m not arguing you should stop at forms. Contrast, headings, alt text, focus management: it all matters, and it should all get done. I’m arguing about sequence. Most teams stall on accessibility because the work feels like an ocean and they can’t pick a place to start swimming. So pick the place where effort and payoff are most lopsided. Label every field. Announce every error. It’s a few lines of markup around the exact spot where your site earns its living. Start there.
More articles
Squinting at your homepage until the words blur reveals what its visual hierarchy is actually saying, which is often not what the words say.
Read →A contact form is a small contract, and forms that don't say what happens after submission ask people to sign blind.
Read →Most accessibility fixes are conversion fixes wearing a different name.
Read →