The HTML details element works in Chrome 12+, Edge 79+, Firefox 49+, Safari 6+, Opera 15+, Samsung Internet 4+, and Android Browser 4+. See full browser support.

Prince Dewani
May 6, 2026
The HTML details element is a WHATWG standard tag that creates a disclosure widget which shows or hides content when the user toggles the summary label. It works in Chrome 12+, Edge 79+, Firefox 49+, Safari 6+ on macOS and iOS, Opera 15+, Samsung Internet 4+, and Android Browser 4+, while Internet Explorer never added support.
This guide covers what the details element is, the browsers that support it, its attributes, how to style it, and the known issues.
The details element is an interactive HTML tag defined by the WHATWG HTML Living Standard. It creates a disclosure widget that shows or hides its child content when the user clicks the summary label. The first child must be a summary element, which acts as the clickable label.
The details element ships in every modern browser engine and is marked Widely Available on the Web Platform Baseline. Internet Explorer is the only major engine that never added support, and a few rendering details still differ between Chromium, Gecko, and WebKit.
Chrome supports the details element from Chrome 12 on Windows, macOS, Linux, ChromeOS, and Android. Chrome 4 to 11 did not support it at all and would render the content as a plain block. Chrome 120 and later also support the name attribute for exclusive accordion groups.
Microsoft Edge supports the details element from Edge 79 on Windows and macOS through the Chromium engine. Edge Legacy 12 to 18 on the EdgeHTML engine did not support it and rendered the markup as flat content. Edge 120 and later inherit Chrome's name-attribute accordion grouping.
Firefox supports the details element from Firefox 49 on Windows, macOS, Linux, and Android. Firefox 47 and 48 had the element disabled by default behind the dom.details_element.enabled flag in about:config, and Firefox 2 to 46 did not support it. Firefox 130 and later add the name attribute for grouped accordions.
Safari supports the details element from Safari 6 on macOS and from Safari 6 on iOS and iPadOS. Safari 3.1 to 5.1 on macOS and Safari 3.2 to 5.1 on iOS did not support it. Safari 17.2 and later add the name attribute for accordion groups, and Safari still uses the ::-webkit-details-marker pseudo-element instead of the standard ::marker on the summary.
Opera supports the details element from Opera 15 on Windows, macOS, and Linux through its Blink engine. Opera 9 to 12.1 on the older Presto engine did not support it. Opera Mobile picks up support from Opera Mobile 14 on Android, and recent Opera builds inherit the name-attribute accordion grouping from upstream Chromium.
Samsung Internet supports the details element from Samsung Internet 4 on Galaxy phones and tablets. Every shipping Samsung Internet build inherits Chromium's details rendering, including the toggle event and the name-attribute accordion grouping in Samsung Internet 23 and later.
Modern Chrome for Android supports the details element from Chrome 12, and the legacy stock Android Browser picks up support from Android Browser 4. Android Browser 2.1 to 3 did not support it, so any pre-Chromium WebView fallback either uses a polyfill or renders the content in an always-open state.
Internet Explorer 5.5 through Internet Explorer 11 never added native support for the details element. Microsoft has retired Internet Explorer, so legacy intranet pages either ship a polyfill such as details-element-polyfill, render the content in an always-open block, or use a Microsoft Edge IE Mode tab where the modern Chromium engine takes over rendering.
Note: The details element renders differently across Safari, Edge Legacy, and older Firefox builds with the dom.details_element.enabled flag. Test it on real browsers and OS with TestMu AI. Try TestMu AI free!
The details element accepts two element-specific attributes plus the global HTML attribute set. Both attributes are simple to set in markup and require no JavaScript to drive the disclosure behavior.
The disclosure triangle, the summary label, and the open and closed states all expose CSS hooks. The catch is that Safari still needs the legacy WebKit pseudo-element for the marker, so any cross-browser stylesheet has to carry both the standard rule and the WebKit fallback.
// Feature detect the details element before relying on it.
const supportsDetails = "open" in document.createElement("details");
if (!supportsDetails) {
document.documentElement.classList.add("no-details");
}
// Listen for open and close transitions on every details panel on the page.
document.querySelectorAll("details").forEach((panel) => {
panel.addEventListener("toggle", () => {
const state = panel.open ? "opened" : "closed";
console.log("Disclosure " + state + ":", panel.querySelector("summary").textContent);
});
});The details element replaces a stack of older patterns built on JavaScript click handlers, ARIA roles, and toggleable hidden classes. Most teams adopt it on surfaces where one chunk of secondary content has to collapse without bringing in a component library.
The details element is widely available, but several rendering and accessibility quirks still bite teams. Most issues come from Safari's marker pseudo-element gap, the lack of a portable open and close animation, and the way Firefox and Safari handle in-page search inside a closed panel.
In my experience, the trap that catches teams most often is shipping a custom disclosure triangle with summary::marker only, then discovering on a real iPhone that Safari still paints the default arrow because the WebKit pseudo-element rule was never added.
All HTML details element version numbers and platform notes in this guide come from these primary sources:
Did you find this page helpful?
More Related Hubs
TestMu AI forEnterprise
Get access to solutions built on Enterprise
grade security, privacy, & compliance