dotvitals

The heading levels skip a level

LowHigh confidenceQuick winseo.headings.hierarchy-skipped

What this check looks for

The page jumps from one heading level to a level more than one below it — an <h4> directly under an <h2>, for example. A reader navigating by heading has no way to tell whether something was missed.

Why it matters

Screen readers announce heading levels, and a skipped level reads as a gap in the document — as though a section were missing. It is usually a styling decision leaking into the structure.

When the check passes, your report says: “Heading levels descend one step at a time”.

What it costs your score

When this check fails it removes 4 points from your SEO score, before the status, confidence and repeat multipliers are applied. SEO carries a weight of 5 in the overall score.

It shares the seo.content family ceiling of 15 points: however many findings that family produces, together they cannot remove more than that from SEO. One underlying problem showing up in several places is still one problem.

Severity
low
Default confidence
high
Status when triggered
warn
Deduction
4 points
Family cap
seo.content · 15
Category
SEO
Module
Seo audit
Fix owned by
user
In the ruleset since
2026.09

How the whole score is calculated

How to fix it

Use the next heading level down, and style it rather than choosing the element by size.

Heading levels describe structure; skipping one reads to a screen reader as a section that is missing.

  1. Find the skipped heading and change it to the level that follows the one above it.

  2. Apply a class for the size you wanted. The element is structure; the class is appearance.

  3. Check templates and components rather than only the page — a component that hard-codes a level produces this wherever it is reused.

How to confirm it worked

  • Re-run this check — the skip should no longer be reported

A named slot like ‹domain› — and the braces left in the configuration below — is filled in with your own values when this rule appears on a report.

Technical detail

‹skips›

The usual cause is choosing a heading element for how it looks: <h4> because the design wants smaller text. The element carries structure and the class carries appearance, so the fix is to use the correct level and style it — <h3 class="text-sm"> says the same thing to a reader and the right thing to a screen reader.

This is primarily an accessibility finding and is scored as a small one. WCAG 2.2 does not require unbroken heading sequences at level A, but the technique is a documented way of meeting the criteria on headings and structure, and it is cheap to do correctly.

Climbing back up a level — an <h2> after an <h3> — is normal and is not reported: that is a new section starting, not a gap.

Standards and references

Test this on your domain

Run the check that produces this finding, on its own, against any domain.

Open the seo audit checker

Other seo audit checks