WCAGdesk
axe-core: empty-heading · WCAG 1.3.1 Info and Relationships · Level A

How 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.21.3.1 Info and Relationships (Level A)
EN 301 5499.1.3.1
BFSG / EAABFSG § 12 via EN 301 549 · EAA Annex I
CategoryStructure & 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

Can a heading contain only an image?

Yes, if that image has alt text that becomes the heading's accessible name.

I need spacing, not a heading?

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.