Heading structure checker
Paste the HTML of a page or a snippet. The tool lists every heading as an indented outline and flags problems that confuse readers, screen readers and search engines. It reads only the text you paste; no web address is fetched.
Runs in your browser: nothing you enter is sent anywhere.
How to use it
- Paste the HTML, or just the part you want to check.
- Read the findings at the top; each one names the heading or level involved.
- Compare the outline with how you want the page to read. Indentation follows the heading level.
How it works
The HTML is parsed with the browser’s own parser into an inert document, and headings are collected in document order. The checks look at the sequence of levels: whether an h1 exists, how many there are, whether the first heading is an h1, whether a level jumps down by more than one, and whether any heading is empty or repeated (ignoring case).
Example
In the sample, the outline jumps from h2 to h4 at “Compost”, there is an empty h3, and “Soil” appears twice, so three findings are shown.
Tips
- Choose heading levels for structure, not for size; style the size with CSS.
- Headings hidden with CSS or the hidden attribute are still counted, because the tool reads the HTML, not the rendered page.
Frequently asked questions
Which elements count as headings?
The elements h1 to h6, and any element with role="heading", whose level is taken from aria-level (2 if it is missing). A heading with no text but an image uses the image's alt text.
What counts as a skipped level?
Going deeper by more than one step, for example an h2 followed directly by an h4. Going back up, such as h4 to h2, is normal and not reported.
Is more than one h1 an error?
HTML does not forbid it, but a single h1 that names the page is the common recommendation and keeps the outline easy to follow. The tool reports it as a finding to review, not as a hard error.
Why are duplicate headings flagged?
Two headings with the same text make it harder to tell sections apart, especially when a screen reader user lists the headings. Repetition is sometimes intended, such as a repeated Details heading, so treat it as a prompt to check.
Does the tool load a web page for me?
No. It only parses the HTML you paste, in your browser, and scripts in it are not run. To check a live page, view its source, copy it and paste it here.