Heading Structure Auditor
See a page's heading outline and find the skipped levels nobody can see.
The page to audit
How this check works
Every heading is read in document order and the outline drawn out, then checked for the three structural problems. A skipped level — an h2 followed by an h4 — is the one that matters and the one nobody notices, because it is completely invisible on screen: it is almost always someone picking a heading level because it looked the right size. Anyone navigating a long page by jumping between headings, which is how screen reader users read, meets it as a missing section. More than one h1 is reported as worth checking rather than as an error, since the specification permits it and it usually comes from a template.
What the results mean
- Skipped level
- A jump of more than one level. Invisible visually, obvious structurally, and almost always a styling decision rather than an intentional one.
- Multiple h1
- Permitted by the specification and usually a template heading plus a page heading. Untidy rather than broken.
- No h1
- The page has no top-level heading, so there is nothing to anchor the outline to.
- Empty heading
- A heading element with no text — normally used for spacing or wrapping an icon. It announces as a blank.
Common problems and fixes
- We skip to h4 because it looks right
- That is the exact cause of nearly every skipped level. Use the level the structure calls for and a class for the size — the two are independent and only one of them is meaningful.
- The page has no headings at all
- Either they are built by JavaScript, or the page uses styled div elements. The second looks identical on screen and is invisible to structural navigation.
- Two h1 elements from our template
- Common and low-priority. Make the banner one an h1 only if it is genuinely the page title; otherwise a paragraph or a lower level is more accurate.
Frequently asked questions
Can a page have more than one h1?
Yes — the HTML specification permits it, and search engines have said for years that it is not a problem. The reason to prefer one is clarity: the outline is easier to follow with a single top-level heading, and a second h1 usually means a template is contributing one that is not really the page title.
Why do skipped heading levels matter?
Because a substantial number of people navigate a long page by jumping from heading to heading rather than scrolling, and the levels are what make that navigation mean anything. A jump from h2 to h4 reads as a section that is missing. It costs nothing to fix — use the level the structure needs and set the size with a class.
Do headings affect SEO?
They help search engines understand what a page covers, and the effect is modest and real. Structure is the stronger reason: a page whose outline reads correctly is easier to skim for everyone, and it is the whole experience for anyone using a screen reader.