Skip to main content
HTML Validation

The element “h3” must not appear as a descendant of the “dt” element.

About This HTML Issue

Heading elements like h3 cannot be placed inside a dt element because dt only accepts phrasing content, and headings are flow content.

The <dt> element represents a term in a description list (<dl>). According to the HTML specification, <dt> can only contain phrasing content — things like text, <span>, <strong>, <em>, and similar inline-level elements. Heading elements (<h1> through <h6>) are flow content, not phrasing content, so nesting them inside <dt> is invalid.

If you need the text inside <dt> to look like a heading, use CSS to style it instead. Alternatively, if the heading is meant to introduce a group of terms, place it before the <dl> or use the <dfn> element inside the <dt> for emphasis on the term being defined.

Invalid Example

<dl>
  <dt><h3>Term Title</h3></dt>
  <dd>Description of the term.</dd>
</dl>

Valid Example

Style the <dt> directly with CSS to achieve the visual appearance you want:

<dl>
  <dt class="term-title">Term Title</dt>
  <dd>Description of the term.</dd>
</dl>

<style>
  .term-title {
    font-size: 1.17em;
    font-weight: bold;
  }
</style>

If the heading is meant to introduce the entire list, place it outside:

<h3>Section Title</h3>
<dl>
  <dt>Term</dt>
  <dd>Description of the term.</dd>
</dl>

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