21 Tailwind CSS Tooltips

21 Pure TailwindPublished

21 Tailwind CSS tooltips and hover cards for developer toolbars and form fields, data tables and status dashboards, avatar mentions and org charts, and reference cards for glossaries, recipes, EXIF, and the periodic table — spanning pill tooltips with CSS arrows, staggered profile reveals, rarity-tinted item cards, and side-anchored hint popovers. Scoped under .ttp-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.

Related21 CSS Tooltips22 Tailwind CSS Image Carousel22 Tailwind CSS Image Gallery

Premium upgradePartner: Untitled UI

Affiliate link

Building a whole Tailwind app, not just this component?

You just browsed 21 Tailwind tooltips. Untitled UI Pro unlocks 5,000+ components and sections and 250+ page examples for React, styled with Tailwind CSS v4. One licence is a one-time $349 with lifetime updates; teams start at $999.

Get Untitled UI Pro

Untitled UI React. We may earn a commission, at no extra cost to you.

01. Tailwind Schematic Hotspot Tooltip with Pulsing CAD Callouts (opens in a new tab)

Published

Pure Tailwind
For product diagrams and exploded views: four pulsing red discs pin a wireframe drawing, and hovering or focusing one reveals a numbered callout with part name, prose and a monospaced spec grid. The port's win is peer — the CSS original's .hot:hover + .leader + .note chain broke the moment anything was inserted between the two elements; peer-hover: compiles to a general sibling combinator and does not.

02. Tailwind Keyboard Shortcut Tooltip with Animated 3D Keycaps (opens in a new tab)

Published

Pure Tailwind
A toolbar tooltip that wears its shortcut as little extruded keycaps which depress on a loop while the pill is shown. The port's win is the intent gate: group-hover:delay-400 states the reveal delay on the pill itself, beside the group-focus-visible:delay-0 that makes the keyboard path instant — in CSS those two live inside one positional three-value transition-delay list nobody can read.

04. Tailwind Editorial Footnote Tooltip with Torn-Paper Sidenote (opens in a new tab)

Published

Pure Tailwind
A sidenote for longform reading: the source phrase grows an underline left-to-right on hover, and a deckle-edged paper card drops on a hairline tether holding an italic note and a monospaced citation. The port's signature move is the underline — bg-[size:0_1px] hover:bg-[size:100%_1px], a background-size transition that no text-decoration can animate.

05. Tailwind Profile Hover Card Tooltip with Staggered Reveal (opens in a new tab)

Published

Pure Tailwind
The hover card behind every @mention: a roster row reveals a 320px panel whose parts arrive in sequence — hero glow, then portrait, then name, tagline and stats — so the card unfolds instead of flicking on. The port's win is the stagger: group-hover:delay-50 and group-hover:delay-[180ms] sit on the children that wait, not in a pile of nth-child rules.

06. Tailwind RPG Inventory Tooltip with Rarity-Tinted Item Cards (opens in a new tab)

Published

Pure Tailwind
A rarity-tinted loot tooltip: common through legendary, each tier driving its own border, item name, stat bar fill and pulsing aura. The port's move is [--rpg:#fbbf24] — one arbitrary property on the slot, read by border-[var(--rpg)], text-[var(--rpg)] and bg-[var(--rpg)] on four descendants, which is exactly what the CSS original did and is far easier to see here.
Newsletter

Enjoying these demos? Get new ones by email.

A short email when a new collection ships. Unsubscribe any time.

at

Almost there: check your inbox to confirm.Manage

08. Tailwind Service Status Tooltip with 30-Day Uptime History (opens in a new tab)

Published

Pure Tailwind
A status list where each service dot pulses with its state and hovering a row opens a side card: 30-day uptime bars, three live metrics and the last incident. The port's lesson is the opposite of clever — 120 uptime bars is where @apply beats repeating twelve utilities, and the per-bar colour and height stay inline because they are data.

09. Tailwind Team Avatar Hover Card with Presence and Quick Actions (opens in a new tab)

Published

Pure Tailwind
Initials avatars that lift on hover and pop a compact profile: gradient hero band, ringed portrait, role, presence, bio, three stats and two actions. The port's honest finding is that per-person gradients are data, so they stay inline as bg-linear-to-br from-[#6028a0] to-[#9060d0] while the card shell — identical four times — moves into one @apply class.
Newsletter

Enjoying these demos? Get new ones by email.

A short email when a new collection ships. Unsubscribe any time.

at

Almost there: check your inbox to confirm.Manage

FAQ

Frequently asked questions

How does the hover-to-reveal actually work with just Tailwind utility classes?
Every tooltip is a parent-child pair. The trigger and popover share a common ancestor that carries the group class, the popover sits absolute next to it in a relative wrapper, and it stays hidden with opacity-0 plus pointer-events-none. On group-hover:opacity-100 and group-focus-within:opacity-100 it fades in, usually paired with a scale-95 to group-hover:scale-100 and a transition so it grows rather than pops. Demo 20's icon toolbar is the cleanest example of this shape. Nothing here needs custom JavaScript — the reveal is pure CSS state driven off :hover and :focus-within, which is why you can paste a demo into any Tailwind project and it works without wiring up a listener.
Why does my tooltip get clipped or cut off at the edge of a scrolling container?
Because these popovers are positioned with absolute inside a relative parent, they live in the normal stacking flow, not a portal. If any ancestor sets overflow-hidden, overflow-auto, or overflow-x-clip — common on cards, data tables like demo 11, and the photo grid in demo 17 — the part of the popover that spills past that box gets clipped. Two fixes: remove the clipping overflow on the nearest ancestor, or flip the popover to the side that has room using directional utilities (anchor it left with right-full instead of left-0, as demo 10 and demo 21 do). Raising z-index does not help here; z-index never lets content escape an overflow clip. Reserve z-50 only for the separate problem of one tooltip sitting behind a neighbouring card.
Are these tooltips accessible to keyboard and screen reader users?
The reveal itself is keyboard-friendly because it keys off group-focus-within as well as hover, so tabbing to the trigger opens the same panel — verify the trigger is genuinely focusable (a real <button> or an anchor, not a bare <div>). Beyond that you must add semantics the utilities can't: give the trigger aria-describedby pointing at the popover's id for a short hint like demo 20 or 21, and mark decorative icons with aria-hidden. The dense hover cards — the profile card in demo 05, the org node in demo 18 — are really disclosures, not tooltips; a screen reader user benefits more from aria-expanded on the trigger there. Also confirm your popover text meets contrast; the amber-on-charcoal departures board in demo 13 looks great but needs checking at small sizes.
The tooltip flickers or disappears when I move my mouse toward it &mdash; how do I fix that?
Flicker happens when there is a physical gap between the trigger and the popover. Once the popover is offset with something like mt-2 or ml-3, the cursor crosses un-hovered space on its way over, the :hover state drops, and the panel vanishes mid-travel. The reliable fix is to keep the hover region continuous: put the offset as padding on the popover wrapper rather than margin, so the gap is still inside the hover target, or anchor the popover flush and push only its inner content. Because the reveal is driven by group-hover on a shared ancestor, another option is to make that ancestor span both elements so the hover never leaves it. The arrow pill in demo 20 avoids the problem by sitting close with its CSS triangle bridging the seam.
How is the little arrow or triangle on the tooltip drawn?
It's a pure-CSS triangle, no image or SVG. The classic trick is a zero-size box with a thick border where three sides are border-transparent and only one side is coloured, which renders as a pointing wedge; demo 20 builds its pill arrow this way. In Tailwind you'll see it as an absolutely positioned child with border-8, three transparent border-color utilities, and one solid, nudged with -bottom-2 or left-1/2 -translate-x-1/2 to straddle the pill edge. An alternative some demos use is a small square rotated 45 degrees with rotate-45 tucked half behind the panel so only a corner shows. Match the arrow's fill to the popover background, and remember the arrow inherits the same overflow clipping caveat — if the wrapper hides overflow, the arrow gets shaved off.
Should I use these for rich hover cards, or are they only for short label tooltips?
Both, but they are two different patterns wearing similar clothes. A true tooltip — demo 20's icon labels, demo 21's field hints — is a few words that name or clarify the trigger; keep it short, non-interactive, and reachable on focus. The larger panels — the profile card in demo 05, the service status card in demo 08, the recipe side card in demo 14 — are hover cards or disclosures that hold links, bars, and structured data. Don't cram interactive controls into a hover-only tooltip: a user can't move their cursor onto a link inside something that closes when hover leaves the trigger. For anything the user needs to click into, prefer a click-to-open panel with real focus management. Use the hover reveal for glanceable, read-only supplementary detail, which is exactly what most of these demos are designed for.
Why doesn't the tooltip open at all on mobile or touch devices?
Touch screens have no persistent hover state, so a group-hover reveal simply never fires — the first tap is treated as the activating tap, not a hover, and there's nothing to sustain it. That's fine for demos where the tooltip is supplementary (the EXIF card in demo 17, the constellation data in demo 15): the underlying content still makes sense without it. It's a problem when the tooltip carries information the user genuinely needs. On touch, make the trigger a focusable control so tapping fires :focus-within and holds the panel open until they tap elsewhere, or promote the pattern to an explicit click-to-toggle disclosure. Never hide load-bearing content — a price, a required form rule like demo 21 — behind hover alone, because a large share of visitors will never see it.
How do I position the popover above, below, or beside the trigger without it jumping around?
Positioning is all in the absolute child's anchor utilities relative to its relative parent. Above: bottom-full mb-2. Below: top-full mt-2. To the right, as the field hint in demo 21 does: left-full ml-3. To the left, like the reference cards in demo 10: right-full mr-3. To centre a top/bottom popover over the trigger, add left-1/2 -translate-x-1/2; for a side one, top-1/2 -translate-y-1/2. The jump usually comes from mixing a scale transition with a translate centring on the same element — put the entrance scale and its origin-bottom or origin-top on an inner wrapper, and keep the translate centring on the outer positioned element, so the two transforms don't fight. Pick one fixed side per trigger; the timeline in demo 19 alternates sides deliberately, but each card's side is fixed, not computed at hover.

Related collections

30 CSS Badges preview

30 CSS Badges

30 hand-coded CSS badges for status indicators, notifications, membership tiers, live-data displays, and SEO / DevOps / financial dashboards — upload progress, typing indicator, transit line status, Core Web Vitals, ECG heartbeat, CI/CD build pipeline, countdown ring, live price ticker, keycap shortcut, wax seal, conference lanyard, and holographic collectibles. Copy-paste HTML and CSS, WCAG 2.2 accessible, MIT licensed.

20 CSS Banners & Alerts preview

20 CSS Banners & Alerts

20 hand-coded CSS banner and alert bars for e-commerce storefronts, SaaS dashboards, marketing sites, and compliance-bound products. Covers GDPR cookie consent with a real preferences panel, promo bars with countdown timers, free-shipping threshold progress, app-install smart banners, maintenance and incident status bars, newsletter signup bars, age verification gates, limited-stock urgency banners, live event announcements, browser upgrade notices, geo and currency switchers, sticky top announcement bars, bottom cookie bars, inline form validation alerts, icon-aligned alert banners, left-border accent alerts, diagonal stripe promos, full-width hero banners, animated gradient border alerts, and a text-wrapping laboratory that shows five strategies for the unbreakable string that breaks more banners than anything else. Every bar is scoped under a .ba-NN prefix for no-collision pasting, guards prefers-reduced-motion, carries the correct aria-live and role semantics, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

25 CSS Blockquotes preview

25 CSS Blockquotes

25 CSS blockquotes for article pull quotes, testimonial cards, docs callout admonitions, statement banners, and social-post embeds. Covers giant decorative quotation marks, minimalist hairline and classic left borders, animated gradient and glowing neon borders, glassmorphism and aurora backgrounds, brutalist cards, speech bubbles, thick accent rails, highlighted mark text, newspaper multi-column layouts, an expandable read-more disclosure, a scroll-snap testimonial slider, and one-click copy.

Search CodeFronts

Loading…