HTML Description Lists: <dl>, <dt> & <dd>

Quick facts

CategoryFlow content (<dl>)
Content modelGroups of one or more <dt> followed by one or more <dd>, optionally each group wrapped in a <div>
Tag omission<dl> cannot be omitted. A <dt> or <dd> end tag may be left out when another <dt>/<dd> follows, but writing it is best practice
Permitted parents<dl>: any element that accepts flow content. <dt>/<dd>: a <dl>, or a <div> inside one
DOM interfacesHTMLDListElement, HTMLElement (<dt>, <dd>)

Syntax

<dl> <dt>Term</dt> <dd>Description of the term</dd> </dl>

Live example

Edit the code below and watch the preview update instantly.

index.html
Preview

Attributes

AttributeDescription
—All three elements accept only the global attributes. The old compact attribute on <dl> is obsolete; use CSS spacing instead.

Common examples

A glossary

Each term in <dt>, its explanation in <dd>.

<dl> <dt>HTML</dt> <dd>The language that structures web pages.</dd> <dt>CSS</dt> <dd>The language that styles them.</dd> </dl>

Product specifications

Name–value pairs like specs are a perfect fit, and easier to style than a table on phones.

<dl class="specs"> <dt>Weight</dt><dd>1.2 kg</dd> <dt>Battery</dt><dd>Up to 12 hours</dd> <dt>Colors</dt><dd>Black</dd><dd>Silver</dd> </dl>

Terms beside their descriptions

CSS grid puts each term and description on one row.

<style> .specs { display: grid; grid-template-columns: max-content 1fr; gap: 0.4rem 1.5rem; } .specs dt { font-weight: bold; } .specs dd { margin: 0; } </style>

Description list vs headings and paragraphs

For short name–value pairs — specs, metadata, a glossary — a <dl> keeps each term and its description tied together, and screen readers announce it as a list with a number of items.

When each description is long, with several paragraphs, images or lists, use headings and paragraphs instead. Headings make long content easy to skim and jump through, which a <dl> doesn’t.

<dl>Headings + paragraphs
Best forShort pairsLong explanations
NavigationRead as a listJump by heading
ExampleSpecs, glossaryGuides, articles

Common mistakes to avoid

  • Using <dl> just for indentation. The indented <dd> look is a default style, not a reason to use the element.
  • Putting a <dd> before its <dt>. Terms come first, followed by their descriptions.
  • Wrapping pairs in anything other than a <div>. Only divs are allowed as wrappers inside a <dl>.
  • Using it for dialogue. Speaker and line isn’t a term and description; use paragraphs.

Accessibility & SEO tips

  • Description lists are a clean, readable way to present FAQs or specs that search engines can pick out as structured information.
  • Keep terms short so the list is easy to scan on small screens.
  • If you need to sort or compare many items across several attributes, a <table> works better.
  • Add a heading above each description list so its topic is clear to readers who skim and to screen reader users jumping between headings.

Browser support

Supported in every browser, including Chrome, Edge, Firefox, Safari and their mobile versions — it has been part of HTML since the very first versions.

Related tags

Frequently asked questions

When should I use a description list instead of <ul> or <table>?
Use <dl> when each item is a name paired with a value or definition, like a glossary or product specs. Use <ul>/<ol> for a plain series of items, and <table> when the data has more than two columns to compare.
Can one term have more than one description?
Yes. A <dt> can be followed by several <dd> elements, and several <dt> terms can share one <dd>, which is useful for synonyms.
Can I wrap each term and description in a <div>?
Yes. HTML allows a <div> around each <dt>/<dd> group directly inside <dl>, which makes styling each pair as a row or card much easier.
What do dl, dt and dd stand for?
Description list, description term and description details. Older guides call it a "definition list", but since HTML5 it's used for any name–value groups.
How do I put the term and description on the same line?
Use CSS grid on the <dl>: display: grid; grid-template-columns: max-content 1fr;, and remove the default margin from <dd>.
Can a <dd> contain paragraphs and lists?
Yes. A description can hold any flow content, including paragraphs, lists and images.
Can a <dt> have more than one term for one description?
Yes. Several <dt> elements in a row can share the <dd> that follows — useful for synonyms such as "Color" and "Colour".
Can I use a description list for an FAQ?
Yes, questions as <dt> and answers as <dd> work well. For a collapsible FAQ, <details> and <summary> are another good option.