The HTML <details> tag
The HTML <details> element creates a native disclosure widget — a show/hide section that needs no JavaScript. Its first child <summary> is the always-visible label; add the open attribute to start it expanded.
Overview
The <details> element provides a built-in, accessible expand/collapse widget — ideal for FAQs, "show more" sections and accordions, with no JavaScript required. The first child must be a <summary>, which is the clickable label; everything else inside is the content revealed when it opens.
Add the boolean open attribute to render it expanded initially, and it fires a toggle event whenever it opens or closes, so scripts can react. Give several <details> the same name attribute and they behave as an exclusive accordion — opening one closes the others — again with no script.
Because it is native, you get keyboard support and the right semantics for free, and modern browsers can even find and reveal collapsed content during in-page search. Style the disclosure marker with CSS when the default triangle does not fit your design.
Syntax
<details>
<summary>Show details</summary>
<p>Hidden content revealed on click.</p>
</details>
Attributes
The <details> element supports the following attributes, in addition to the global attributes available to every HTML element.
| Attribute | Value | Description |
|---|---|---|
open |
A boolean attribute — present or absent. | Shows a details/dialog in its open state. |
Example
<details>
<summary>What is HTML?</summary>
<p>HyperText Markup Language — the structure of the web.</p>
</details>
Best practices
- Make a <summary> the first child as the clickable label.
- Add the
openattribute to start a section expanded. - Give related
<details>the samenameto make an exclusive accordion. - Restyle the disclosure marker with CSS rather than rebuilding the widget in JavaScript.
Frequently asked questions
How do I make a collapsible section in HTML?
<details> with a <summary> label and the content inside — it expands and collapses with no JavaScript.How do I make an accordion with details?
<details> elements the same name attribute; opening one then closes the others.How do I make a details element open by default?
open attribute: <details open>.How do I style the disclosure triangle?
::-webkit-details-marker / ::marker pseudo-elements.