Checks

Empty headings

Flags heading elements that render no visible text at all, since an empty h1 through h6 breaks the page outline for readers, screen readers, and crawlers alike.

Updated 2026-07-19minorHeadings

What this check looks for

This check collects every <h1>-<h6> element and filters for ones whose text content (including an inner alt on an image, same as the h1 checks) is empty after trimming. Any empty heading found triggers a warn, with each one listed as evidence. A page with no headings at all reports "na"; a page where every heading has text passes.

Why it matters

An empty heading is a placeholder in the document outline with nothing behind it — it still counts as a structural landmark to screen readers and to any automated tool building a page outline, so it shows up as a confusing blank entry in both. It's often left behind by a CMS template rendering a heading wrapper even when its content field is empty, or a heading whose text was replaced by a background image without an alt fallback. For AI content extraction, an empty heading breaks the assumption that every outline entry has substance to summarize, which can cause a section to be skipped or misread entirely.

How to fix it

Remove headings that have nothing in them, or fill them with real text:

html
<!-- Empty heading (broken template) -->
<h2></h2>
<p>Free shipping on orders over $50.</p>

<!-- Fixed -->
<h2>Shipping and returns</h2>
<p>Free shipping on orders over $50.</p>

If a heading wraps a decorative image instead of text, give that image a descriptive alt attribute so the heading still carries meaningful content.

See how your site scores on this check

Run a free scan

See how your site scores on this check.

The free teaser scan checks a sample of your pages — no account, no card.