Skip to main content
HTML Validation

Element “dl” is missing a required instance of child element “dd”.

About This HTML Issue

The <dl> element represents a description list — a collection of name-value groups where <dt> elements provide the terms (or names) and <dd> elements provide the associated descriptions (or values). According to the HTML specification, the content model for <dl> requires that each <dt> group be followed by one or more <dd> elements. A <dl> with only <dt> elements and no <dd> elements is invalid HTML.

This matters for several reasons. Assistive technologies like screen readers rely on the proper <dt>/<dd> pairing to convey the relationship between terms and their descriptions. A description list without descriptions is semantically meaningless — it’s like having a dictionary with words but no definitions. Browsers may also render the list inconsistently when the expected structure is incomplete.

Common causes of this error include:

  • Accidentally using <dl> and <dt> to create a simple list instead of using <ul> or <ol>.
  • Dynamically generated content where the <dd> elements are missing due to empty data.
  • Incomplete markup where the developer forgot to add the description elements.

To fix this issue, make sure every <dt> element inside a <dl> is followed by at least one <dd> element. If you don’t actually need a description list, consider using a different element like <ul> for simple lists.

Examples

Invalid: <dl> with only <dt> and no <dd>

<dl>
  <dt>The Meaning of Life</dt>
</dl>

This is invalid because the <dt> term has no corresponding <dd> description.

Fixed: Adding a <dd> element

<dl>
  <dt>The Meaning of Life</dt>
  <dd>A philosophical question about the significance of existence.</dd>
</dl>

Invalid: Multiple terms without any descriptions

<dl>
  <dt>HTML</dt>
  <dt>CSS</dt>
  <dt>JavaScript</dt>
</dl>

This triggers the error because none of the terms have associated descriptions.

Fixed: Each term with a description

<dl>
  <dt>HTML</dt>
  <dd>A markup language for structuring web content.</dd>
  <dt>CSS</dt>
  <dd>A style sheet language for describing presentation.</dd>
  <dt>JavaScript</dt>
  <dd>A programming language for web interactivity.</dd>
</dl>

Valid: Multiple terms sharing a single description

Multiple <dt> elements can share a single <dd>, which is useful for synonyms or aliases:

<dl>
  <dt>Laptop</dt>
  <dt>Notebook</dt>
  <dd>A portable personal computer with a clamshell form factor.</dd>
</dl>

Valid: A single term with multiple descriptions

A <dt> can also be followed by multiple <dd> elements:

<dl>
  <dt>Python</dt>
  <dd>A large constricting snake.</dd>
  <dd>A high-level programming language.</dd>
</dl>

Valid: Using <div> to wrap name-value groups

The HTML spec allows wrapping each <dt>/<dd> group in a <div> for styling purposes. Each <div> must still contain at least one <dd>:

<dl>
  <div>
    <dt>Name</dt>
    <dd>Jane Doe</dd>
  </div>
  <div>
    <dt>Email</dt>
    <dd>jane@example.com</dd>
  </div>
</dl>

Alternative: Use <ul> when descriptions aren’t needed

If you only need a list of items without descriptions, a <dl> is the wrong element. Use an unordered list instead:

<ul>
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>

Find issues like this automatically

Rocket Validator scans thousands of pages in seconds, detecting HTML issues across your entire site.

Help us improve our guides

Was this guide helpful?
🌍 Trusted by teams worldwide

Validate at scale.
Ship accessible websites, faster.

Automated HTML & accessibility validation for large sites. Check thousands of pages against WCAG guidelines and W3C standards in minutes, not days.

Scheduled Reports
API Access
Open Source Standards
$7 / 7 days

Pro Trial

Full Pro access. Cancel anytime.

Start Pro Trial →

Join teams across 40+ countries