CSS Tooltip Generator - Online Hover Popup Builder
Design a pure CSS tooltip with custom text, position (top/bottom/left/right), and arrow. Copy the clean code.
UD5 Toolkit
Explore the native Popover API — create tooltips, menus, modals & more using pure HTML attributes. No JavaScript required.
Click the button to toggle. Click outside or press Esc to close — all built into the browser.
<button popovertarget="my-popover">Toggle</button>
<div id="my-popover" popover="auto">
Hello! I'm a native popover.
</div>
A tooltip-style popover with custom CSS — dark background, rounded, with smooth animation.
<!-- HTML -->
<button popovertarget="tip">Hint</button>
<div id="tip" class="pop-tooltip" popover="auto">
Styled tooltip!
</div>
<!-- CSS -->
.pop-tooltip {
background: #2d3436; color: #fff;
border-radius: 8px; padding: 0.6rem 1rem;
}
[popover]:popover-open {
opacity: 1; transform: scale(1);
}
[popover]::backdrop {
background: rgba(0,0,0,0.25);
}
A clean dropdown menu built with Popover API — perfect for navigation or action menus.
<button popovertarget="menu">Menu</button>
<div id="menu" class="pop-menu" popover="auto">
<a href="#">Profile</a>
<a href="#">Settings</a>
<a href="#">Help</a>
<hr>
<a href="#">Logout</a>
</div>
<!-- CSS -->
.pop-menu { padding: 0.4rem 0; min-width: 180px; }
.pop-menu a { display: block; padding: 0.55rem 1.2rem; }
A confirmation dialog using Popover API. Includes action buttons — all declarative.
Are you sure? This action cannot be undone.
<button popovertarget="confirm">Delete</button>
<div id="confirm" class="pop-confirm" popover="auto">
<strong>Confirm Delete</strong>
<p>Are you sure?</p>
<button popovertarget="confirm"
popovertargetaction="hide">
Delete
</button>
<button popovertarget="confirm"
popovertargetaction="hide">
Cancel
</button>
</div>
A notification-style popover with a colored accent border. Great for alerts and toasts.
<button popovertarget="notify">Show Alert</button>
<div id="notify" class="pop-notify" popover="auto">
<strong>✅ Success!</strong>
<small>Your changes have been saved.</small>
</div>
<!-- CSS -->
.pop-notify {
border-left: 4px solid #10b981;
max-width: 300px;
}
A classic hover tooltip using zero JavaScript — no Popover API needed. Works in all browsers.
<!-- HTML -->
<span class="tooltip-wrap">
Hover me
<span class="tooltip">Pure CSS tooltip!</span>
</span>
<!-- CSS -->
.tooltip-wrap { position: relative; cursor: pointer; }
.tooltip {
position: absolute; bottom: calc(100% + 8px);
left: 50%; transform: translateX(-50%);
background: #2d3436; color: #fff; padding: 0.5rem;
border-radius: 6px; opacity: 0; pointer-events: none;
transition: opacity 0.18s;
}
.tooltip-wrap:hover .tooltip { opacity: 1; }
Multiple buttons targeting the same popover. Any trigger toggles it.
<button popovertarget="shared">Open</button>
<button popovertarget="shared">Also Opens</button>
<button popovertarget="shared"
popovertargetaction="hide">Close</button>
<div id="shared" popover="auto">
Shared popover content!
</div>
Smooth scale+fade animation using :popover-open and @starting-style.
[popover] {
opacity: 0;
transform: scale(0.95);
transition: opacity 0.18s, transform 0.18s,
overlay 0.18s allow-discrete,
display 0.18s allow-discrete;
}
[popover]:popover-open {
opacity: 1;
transform: scale(1);
}
@starting-style {
[popover]:popover-open {
opacity: 0;
transform: scale(0.95);
}
}
popover attribute and popovertarget attribute for declarative show/hide behavior, with built-in light dismiss (click outside to close), Esc key support, and top-layer rendering above all other content.
popover="auto": The browser manages the popover — it closes automatically when you click outside (light dismiss) or press Esc. Only one auto popover can be open at a time. Best for most use cases.popover="manual": You control show/hide via JavaScript. Multiple manual popovers can be open simultaneously. Useful for persistent tooltips, multi-step workflows, or programmatic control.
popover="auto": when a user clicks anywhere outside the popover (or presses Esc), the popover closes automatically. This is powered by an invisible ::backdrop layer that captures clicks. You can style this backdrop with CSS — for example, adding a semi-transparent overlay: [popover]::backdrop { background: rgba(0,0,0,0.3); }
popover="auto" + popovertarget for click-to-show tooltips with full accessibility.:hover pseudo-class with absolutely positioned elements for hover-triggered tooltips, which work in all browsers including older ones.aria-label or aria-labelledby where appropriate, and ensure sufficient color contrast.
:popover-open pseudo-class combined with CSS transitions. Set initial styles (e.g., opacity: 0; transform: scale(0.95);) on the [popover] selector, then override them in [popover]:popover-open. For enter animations, use @starting-style (Chrome 117+) to define the pre-open state. Include allow-discrete in transitions for smooth overlay behavior.
#my-popover { position-anchor: --trigger; top: anchor(bottom); }Design a pure CSS tooltip with custom text, position (top/bottom/left/right), and arrow. Copy the clean code.
Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Query the permission state of camera, microphone, geolocation, and more. See the response and learn the API.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Toggle a screen wake lock to prevent the device from dimming or sleeping. See the lock state and learn the API.
Decode an image progressively using the ImageDecoder API. See partial results and metadata. Modern alternative to <img>.
Decode individual video frames from a local file using the VideoDecoder API. Step through frames. Cutting‑edge browser feature.
Request HID devices and list them. Read input reports and send output. For custom hardware and controllers.
Demonstrate how the Web OTP API automatically reads one‑time codes from SMS (mobile). Simulation with a fake SMS input.
Acquire and release locks across tabs. Prevent race conditions in IndexedDB or localStorage. Visual queue and lock state.
Connect a gamepad and see all button presses and axis movements visually. Check that every input is detected correctly.
Trigger different vibration patterns on mobile devices. Test if your phone supports haptic feedback. Simple demo.
See your device's battery level, charging status, and discharge time using the Battery Status API. Fun utility.
Check current screen orientation and test the lock API. Useful for mobile web apps. Demo with code.
Experiment with the Async Clipboard API: read/write text and images from the clipboard. Verify permissions and see demo code.
Test the Web Share API by sharing text, links, and files directly from the browser. Check compatibility and see example code.
Enter an API URL and quickly check its HTTP status code and response time. See response headers and body. Browser fetch.
Paste HTML and instantly remove all tags, leaving only the text content. Optional keep line breaks. Quick cleaning.
Create a customizable scrolling marquee banner. Copy the HTML and CSS. For retro web projects or fun.
Pick a method, URL, headers, and body, then send an HTTP request directly from your browser. Debug APIs easily.
Paste CSV and get a beautiful HTML table with sortable headers (optional). Copy the full HTML/CSS snippet. Local.
Paste an HTML `<table>` snippet and instantly get a clean Markdown table. Supports colspan and alignment hints. Local.
Paste lines of text and automatically convert to an HTML ordered list with correct numbering and indentation.
Reduce your HTML file size by stripping whitespace, comments, and optional closing tags. Secure browser‑based.
Paste multiple HTML snippets (header, footer) and a main content, then combine them into a single preview. Static site helper.
Generate random JSON data with customizable fields (users, products, orders). Useful for frontend mocking. All local.
Execute GraphQL queries against any endpoint with variables and headers. Explore schema via introspection. All requests made directly from your browser.
Strip HTML tags and convert web content to plain Markdown. Preserve headings, lists, and links. Perfect for content migration. All processing in browser.
Write or paste HTML, CSS, and JavaScript and instantly see the rendered output in a sandboxed iframe. A handy frontend prototyping tool.