DEVELOPER WORKBENCH

HTML Heading Outline Inspector

Extract a readable h1–h6 outline from pasted HTML. Review skipped levels, empty headings, duplicate IDs and main-content scope, with text, JSON and CSV exports.

Local processingEditable exampleCopy + file exports

Settings

Try the example or enter your own settings.

Static native h1–h6 review, not a full accessibility or SEO audit. CSS visibility, accessible names, rendered scripts, shadow DOM and nested template content are not modeled. Skipped-level notes are review prompts; multiple h1 headings are context-dependent. No ranking guarantees. Pasted markup is never inserted into the visible page.

Using HTML Heading Outline Inspector

Extract a readable h1–h6 outline from pasted HTML. Review skipped levels, empty headings, duplicate IDs and main-content scope, with text, JSON and CSV exports.

  1. Paste an HTML document or fragment, or open a UTF-8 HTML file. The example contains deliberate outline and ID issues.
  2. Choose all native headings or main regions, and decide whether explicitly hidden headings should be included. Extract the outline.
  3. Review the text, parent relationships and notes. Export JSON, a readable outline or CSV, then check the actual rendered page and content context.

Example

Try the included editable example.
Choose all native headings or main regions, and decide whether explicitly hidden headings should be included. Extract the outline.

Questions & answers

Does the HTML run in the tool?

No. A detached template parses it without inserting it into the live page. Script contents, events and external resources are not executed. Results are rendered as text. The tool does not fetch websites.

What does a skipped-level note mean?

A heading deeper than one level below the preceding included heading deserves review. Returning from h4 to h2 closes subsections and is not flagged as a forward skip. Structural context and omitted headings can affect interpretation.

Are multiple h1 headings always wrong?

No. The report counts them and prompts a context review. It does not declare WCAG failure or predict search ranking. Check whether heading labels and hierarchy explain the content clearly.

Does this measure screen-reader heading names?

No. It extracts native h1–h6 textContent, omitting script/style/noscript/template contents. It does not compute accessible names, image alt text, aria-label/labelledby or CSS-generated text. ARIA role headings are counted separately but not placed in the outline.

How are hidden headings and duplicate IDs handled?

Explicit hidden and aria-hidden=true ancestors can be flagged or excluded. CSS visibility is not evaluated. Heading IDs are checked against all IDs in the parsed fragment, including non-heading elements. IDs are case-sensitive.

What limits and scope apply?

100,000 HTML characters, 10,000 elements and 500 native headings. Heading text is capped at5,000 characters with a truncation note. Main scope includes native main or role=main regions. Nested template content, shadow DOM and script-created headings are not inspected.

Help improve this tool

Report a problem or suggest an improvement

Describe the issue without pasting private tool input. Feedback goes to our admin inbox.

Find another tool · Read practical guides