Hover card
A hover card opens a small panel when someone pauses on a trigger, and that panel can hold more than a label. You get a peek at a profile, a link, or a thumbnail without leaving the page.
Also called Profile preview, Hover preview, User popover.
The Q3 report is ready for review. Sam Okonkwo signed off on the numbers yesterday. Priya Nair will publish once finance approves.
Pause on a name to open the preview. Tab to the link and the card opens on focus. Click Follow inside the card without leaving your place in the thread.
For designers
A hover card buys a few seconds of context without a click. Someone reading a comment thread can pause on a name, see who wrote it, and follow them, all while their place in the thread stays put. GitHub does this on @mentions, and Slack does it when you pause on a colleague in a message.
The cost is discoverability on touch screens, where there is no hover, and patience on desktop, where opening too fast becomes noise. Set an open delay around 300 to 700ms so a casual pointer pass does not flash a panel. Keep the card narrow, most products land between 260 and 320px wide, and put at most one primary action inside it.
When to use a hover card
Use a hover card when
- Someone needs a quick peek at a person, place, or thing linked from inline text
- The preview has a link or button someone might click without navigating away first
- The extra detail helps but is not required to finish the current task
Reach for something else when
- The message is a short label with nothing to click inside. Use a tooltip instead.
- The content needs a click to open and should stay open after the pointer leaves. Use a popover instead.
- The trigger sits on a phone where there is no hover state. Use a drawer instead.
- Someone already knows the name and would rather type it. Use a command palette instead.
Variants
Profile preview for people, link preview for URLs, and a compact card when the row beneath cannot be covered.
Profile preview. Avatar, name, role, and one action button like Follow or Message. The default for @mentions and assignee lists.
Link preview. Title, domain, and a thumbnail when the trigger is a URL someone might want to sanity-check before clicking.
Compact. Name and one line of metadata only, for dense tables where a full card would cover the row beneath it.
How to build a hover card
There is no native hover card element. The pattern is a link or button trigger with a sibling panel that opens on hover and focus, carries role="dialog" or lives in a popover-like region, and stays open while the pointer moves inside it.
<a href="/people/sam/" id="person-trigger">Sam Okonkwo</a>
<div role="dialog" aria-labelledby="person-name" hidden>
<img src="/avatars/sam.jpg" alt="">
<p id="person-name">Sam Okonkwo</p>
<p>Design, Berlin</p>
<a href="/people/sam/">View profile</a>
</div>
The detail people rebuild wrong is the close timing. The card should stay open when the pointer moves from the trigger into the panel. Radix Hover Card handles this with a shared open delay and a close delay of a few hundred milliseconds. Keyboard users need the same card on focus, with no open delay, because they have already committed to the trigger. WCAG 2.4.7 requires a visible focus indicator on the trigger link, and the card itself should not steal focus on open unless someone tabs into it.
Edge cases
Touch screens. Either open the preview on tap as a popover, or link straight to the profile page. A hover-only preview on a phone never appears.
Motion. Scale and fade on open should respect prefers-reduced-motion: reduce and snap instead of easing. The open animation is decoration, not information.
Many triggers in a row. In an avatar stack or a list of names, cap the card width and keep the open delay consistent so scanning does not open five cards in a row. Stagger is not an option here: only one card should be open at a time.
Common questions
- Hover card or tooltip?
- A tooltip is a short, read-only label under about 12 words. A hover card holds a profile, a thumbnail, or a button someone can click. If the panel has anything interactive inside it, it is a hover card or a popover, not a tooltip.
- Hover card or popover?
- A popover opens on click and stays until dismissed. A hover card opens on hover or focus and closes when the pointer leaves. Use a hover card when the preview is optional context. Use a popover when someone has asked for the panel on purpose.
- What open delay should a hover card use?
- Between 300 and 700ms is the usual range. Radix UI defaults to 700ms. The delay stops a casual pointer pass from flashing a panel. Keyboard focus should open the card immediately, because the person has already committed to the trigger.
- How does a hover card work on a touch screen?
- It does not, because there is no hover. Open the same content on tap as a popover, or link straight to the full profile page. GitHub and Slack both fall back to a tap on mobile.
- Can someone move the pointer into the card?
- Yes, and the card should stay open while they do. Set a close delay of a few hundred milliseconds so the pointer can travel from the trigger into the panel without the card disappearing mid-move.
Last reviewed 27 AUG 2026