empty-heading · WCAG 1.3.1 Info and Relationships · Level AHow to fix the “empty-heading” accessibility issue
The axe-core empty-heading rule fails when a heading element (<h1>–<h6>) contains no accessible text. It still appears in the screen-reader heading list — as a blank entry that breaks navigation. Relates to WCAG 2.2 1.3.1 (Level A).
What axe-core checks
axe-core fails a heading whose text content is empty after trimming, with no aria-label and no labelled image inside.
Which standard this maps to
| WCAG 2.2 | 1.3.1 Info and Relationships (Level A) |
| EN 301 549 | 9.1.3.1 |
| BFSG / EAA | BFSG § 12 via EN 301 549 · EAA Annex I |
| Category | Structure & Landmarks |
Why it matters
Empty headings usually come from using heading tags as spacers or from a CMS emitting a heading wrapper with no content. They pollute the heading outline screen-reader users depend on.
Common causes
- Heading tags used purely for spacing or icons
- A heading wrapping an image with empty alt
- CMS modules outputting an empty
<h2></h2> - Text removed but the heading tag left behind
How to fix it
Put real text in the heading, or if it is not a heading, use a non-heading element. If it labels an image, give the image alt text.
<!-- Fails -->
<h2></h2>
<!-- Passes -->
<h2>Customer reviews</h2>
FAQ
Yes, if that image has alt text that becomes the heading's accessible name.
Use a <div> or CSS margin. Never use an empty heading as a layout spacer.
Find every issue like this on your site
Run a free WCAG 2.2 AA scan — real axe-core engine, no signup. Or get a timestamped evidence report for €29.