Form errors: accessible summary + inline messages

A practical checklist for teams. No tracking.
Goal

When a form submission fails, users should quickly learn what went wrong, where it went wrong, and how to fix it — regardless of input method (mouse, keyboard, screen reader, voice).

Checklist

Minimal pattern sketch

This is a pattern sketch (not a full form library). Adapt to your design system and validation rules.

<div id="errorSummary" hidden role="alert" aria-labelledby="errTitle" tabindex="-1">
  <h2 id="errTitle">Please fix the following</h2>
  <ul>
    <li><a href="#email">Email: Enter your email.</a></li>
    <li><a href="#zip">ZIP: Enter a 5-digit ZIP code.</a></li>
  </ul>
</div>

<label for="email">Email</label>
<input id="email" aria-invalid="true" aria-describedby="emailError">
<p id="emailError">Enter your email.</p>

Keyboard reminder: Tab navigates fields; submitting should not strand focus.

Common pitfalls