Accessible Interface Pattern Checklist

Keyboard, focus, and semantic requirements for common browser interface patterns.

  • JSON5,699 B
  • YAML4,132 B · −27%
  • TOON3,231 B · −43%

Keyboard, focus, and semantic requirements for common browser interface patterns. Each row includes a practical application and a failure to check before using it.

Use it when

  • Check an interface before shipping it.
  • Choose native browser elements before adding custom behavior.

Watch out for

  • This checklist does not replace testing with users and assistive technology.
  • ARIA roles do not implement behavior by themselves.

The data

PatternSemantic startKeyboard behaviorCommon failure
Search formlabel plus input type=search and buttonEnter submits; the label identifies the field.Using only placeholder text as the accessible name.
Modal dialogdialog with showModal and a visible titleEscape closes; focus returns to the opener.Keyboard focus escapes behind the modal.
Disclosuredetails and summaryEnter or Space toggles the summary.Building a clickable div without keyboard behavior.
Navigationnav containing real linksTab follows the document order.Using menu roles for ordinary website navigation.
Tabstablist, tab, and tabpanelArrow keys change the selected tab under the chosen activation policy.Adding roles without implementing keyboard behavior.
Data tabletable with th scope=col or rowLinks and controls remain reachable; wide data may scroll.Replacing table semantics with a visual grid of divs.
Copy actionbutton with an accessible nameEnter or Space activates; announce success or failure.Showing Copied even when the clipboard write failed.
Validation errorAssociated text and aria-invalidFocus stays predictable; errors describe a correction.Relying on a red border alone.
Reduced motionprefers-reduced-motion media queryAll actions still work when transitions are removed.Hiding information with an animation that no longer runs.
Mobile navigationDisclosure button with aria-expandedEscape closes; focus order stays usable.Leaving a hidden drawer’s links focusable.

Fields

The shape of this dataset, read from the data itself: every column, its type and a real value. Agents can use this to plan a query without fetching the whole document.

SectionFieldTypeExample
datapatternstringSearch form
datasemantic_startstringlabel plus input type=search and button
datakeyboard_behaviorstringEnter submits; the label identifies the field.
datacommon_failurestringUsing only placeholder text as the accessible n…

Fetch the same bytes

The static files contain the same reference rows as the API, with no API rate limit. Live metadata, such as view counts, may differ. Use the API for content negotiation; use the static files for a cacheable snapshot.

curl "https://yjtoon.com/api/dataset/web-accessibility-patterns?format=toon"
const res = await fetch(
  "https://yjtoon.com/static-data/dataset/web-accessibility-patterns.toon"
);
const toon = await res.text();

Rate limit: 120 requests per minute per IP, no key and no signup. API reference →

Sources and editorial notes

Original editorial reference notes by YJTOON, informed by the linked primary documentation. External specifications retain their own licenses.

Editorial review: . Source documents keep their own licenses.

Topics

  • web-technologies
  • web accessibility patterns
  • reference
  • engineering

Search the library

Search by a topic, title, or keyword.

Start with a collection

Browse all 205 datasets