empty-heading

Headings must not be empty

manualconfidence: mediumseverity: minoroperable

Checks that heading elements (<h1>-<h6> or role="heading") have a non-empty accessible name.

Applies to. Applies to elements with a heading role: native <h1>-<h6>, or any element with explicit role="heading" (unless overridden by another explicit role).

Expectation. The heading has a non-empty accessible name: aria-label, aria-labelledby, visible text content not hidden from assistive technology, or (as a last resort) a title attribute. An empty heading is announced as "heading, level N" with nothing else, which is confusing when navigating by heading.

Examples

can't tell
<h2></h2>

The heading has no accessible name at all — nothing for a screen reader to announce.

n/a
<h2>Section title</h2>

The heading has visible text content.

View source