Keyboard accessibility: test it in five minutes, fix it for good
Test any page without a mouse in five minutes, then fix focus order, visibility and traps.
Do it yourself: websites
Forms are where accessibility turns into revenue, applications and appointments — or into lost customers and lawsuits. Checkout, sign-up, booking and contact forms are the flows plaintiffs’ testers try first.
<label for="email">Email address</label>
<input id="email" name="email" type="email" autocomplete="email">
for attribute matches the input’s id, so clicking the label focuses the field and screen readers announce it.Radio buttons and checkbox groups need a group label:
<fieldset>
<legend>Preferred contact method</legend>
<input type="radio" id="c-email" name="contact" value="email">
<label for="c-email">Email</label>
<input type="radio" id="c-phone" name="contact" value="phone">
<label for="c-phone">Phone</label>
</fieldset>
Say which fields are required in a way that doesn’t depend on color, and use the required attribute so assistive technology announces it:
<label for="name">Full name <span aria-hidden="true">*</span>
<span class="sr-only">(required)</span></label>
<input id="name" name="name" required autocomplete="name">
Explain the asterisk at the top of the form: “Fields marked * are required.”
<label for="dob">Date of birth</label>
<span id="dob-hint" class="hint">For example, 03/27/1985</span>
<input id="dob" name="dob" aria-describedby="dob-hint" inputmode="numeric">
Bad: “Invalid input.” Good: “Enter a date of birth in the format MM/DD/YYYY.”
Each error should:
aria-describedby,aria-invalid="true" on the field,<input id="email" aria-invalid="true" aria-describedby="email-error">
<p id="email-error" class="field-error">Enter an email address like name@example.com</p>
When a form is submitted with errors, show a summary at the top, move focus to it, and link each item to the field. Our own contact form works this way.
autocomplete="name", "email", "tel", "street-address", "postal-code" let browsers and password managers fill fields — essential for people with motor and cognitive disabilities, and required by WCAG 1.3.5.
WCAG 2.2’s Accessible Authentication criterion (3.3.8) means users shouldn’t have to memorize, transcribe or solve something to log in unless there’s an alternative. Allow paste in password and code fields, support password managers, and offer passkeys, email links or other alternatives to puzzle CAPTCHAs.
If the user already gave you their address, pre-fill it or offer “Same as billing” (WCAG 3.3.7 Redundant Entry).
After submission, announce the result with a live region or move focus to a confirmation heading, so screen reader users know it worked.
Send us a few URLs or sample PDFs. Within two business days you get a free, plain-English snapshot of your biggest accessibility risks and what it takes to fix them.