Paste HTML and inspect the heading outline

Paste page HTML below; the tool counts H1-H6 in the browser and finds multiple H1s, skipped levels, empty headings and a first heading that is not H1. No network, no upload; results can be exported as CSV.

Not checked yet.

Running built-in self-test…

Rules

MeasureDefinitionBoundary
HeadingStatic <h1>-<h6>, case-insensitiveInside script/style/comments excluded
Multiple H1More than one H1HTML5 sectioning needs human judgement
Skipped levelAdjacent headings increase by more than one level (h2 to h4)Decreases are not skips; a first non-H1 is separate
Empty headingNo text after stripping tags and whitespaceAn icon or image only also counts as empty
First headingThe first heading is not H1Counted separately from skipped levels
Not judgedVisual size, ARIA role=heading, sectioning, copy qualityNo page scripts are executed

The tool parses strings only: it does not build a DOM or execute scripts. It follows the same static rules as the site's article-page pilot; Node assertions live in scripts/test_heading_check.js (12 checks).

Why skipped levels matter

In the site's article heading-outline pilot, 22 of 36 pages have no H2 and nine skip a level: when body copy jumps from H2 to H4, screen readers and generated tables of contents lose a level. Use the checker after a redesign; see also homepage semantics, keyboard access and ARIA.

Privacy

Parsing happens on this page with no network request; the exported CSV contains heading levels, text and issues only. Opening the page with #sample fills the sample automatically.

Frequently asked questions

Does the tool upload the HTML?

No. Parsing runs entirely in the browser with no network request; nothing is stored or sent.

How is a skipped level detected?

Only adjacent headings are compared: a jump of more than one level (h2 to h4) counts as one skip; a decrease (h4 to h2) is not a skip. A first heading that is not H1 is reported separately and not double-counted.

Is more than one H1 always wrong?

HTML5 allows multiple H1s inside sectioning elements, but corporate templates, SEO practice and screen-reader expectations usually assume one main H1; the tool lists it as an issue for you to judge against the structure.

Why strip script and style first?

An <h1> inside a template string or stylesheet is not a real heading and would inflate the count; the tool reads static HTML only.

Can it replace axe or a manual review?

No. It checks static heading tags only and does not judge visual hierarchy, ARIA role=heading, sectioning structure or copy quality, and it does not execute page scripts.

Can the checks be reproduced?

Yes. The Node assertions live in scripts/test_heading_check.js (12 checks); opening the page with #sample fills the sample.

About the author

Lingyi Information Official (delivery team) works on requirements, proposals and acceptance for corporate websites, brand and smart-manufacturing projects. This tool parses static heading tags only; it does not execute page scripts or judge visual hierarchy, and its sample and rules can be reproduced.

A clear outline reads well

Headings are not font sizes: they tell screen readers and tables of contents how the page is structured; check the outline before the visuals.

Request a recheck plan