WCAG 1.4.13 — Content on Hover or Focus
A tooltip that appears on hover should be dismissible, hoverable itself, and persistent enough to read. The trio of failures — invisible Escape, can't move the pointer to the tooltip, vanishes too fast — locks out anyone with motor or vision impairments.
What this requires
When additional content appears on hover or focus and disappears again, it must satisfy three conditions:
- Dismissible — the user can dismiss the content without moving pointer or focus (Escape closes the tooltip while the trigger keeps focus).
- Hoverable — the user can move the pointer over the appearing content without it disappearing. Magnifier users in particular need this.
- Persistent — the content stays visible until the hover, focus, or dismissal is removed, or the content is no longer valid.
The criterion targets tooltips, hover menus, focus-revealed help panels, and similar UI.
How AI coding tools fail this
When asked for "a tooltip on this icon", AI tools often reach for
title="..." (which is non-interactive and inaccessible) or build a
pure-CSS :hover reveal with no JavaScript to handle Escape, focus,
or pointer-on-tooltip behaviour.
The second pattern: tooltips wired to onMouseEnter/onMouseLeave
on the trigger only. The user moves the pointer toward the tooltip
content; the trigger fires mouseleave; the tooltip disappears
before the user reaches it.
The third: focus-only triggers. The tooltip appears on Tab focus but not on hover; or on hover but with no focus equivalent. Both directions need to work.
Edge cases
titleis not a tooltip. The browser's tooltip behaviour is inconsistent, the styling can't be controlled, and screen-reader support is patchy. Use a real tooltip primitive.- Error and validation messages that appear next to a field on blur are not "content on hover or focus" — they don't disappear when focus leaves. They fall under 3.3.1.
- Dropdown menus and disclosure widgets activated by click aren't in scope — those are not hover/focus reveals.
- Mobile doesn't have hover; the criterion targets desktop/pointer use. Mobile equivalents must use tap and a discoverable trigger.
- Tooltips that contain interactive content (links, buttons) need to be navigable by keyboard. Use a popover, not a tooltip.
How Jeikin handles this
axe-core flags title attributes used as the only accessible name on
interactive elements. The richer behaviour — does pressing Escape
dismiss, does the tooltip persist on hover — needs guided review.
The dashboard records each tooltip pattern with a checklist for the
three requirements; libraries with known-good ARIA behaviour are
recorded once and reused as evidence.