Paste your HTML or Markdown to see the heading outline as a tree and find multiple H1s, skipped levels, and empty headings, with line numbers.
This tool runs entirely in your browser. What you enter is never sent anywhere.Your input is never sent anywhere.
DetailsInput format
Heading outline
Paste HTML or Markdown with headings
and the outline will appear here.
Issues found (0)
Enter some text to check it for heading issues.
Structure status
No input
Paste some HTML or Markdown to see the result.
Headings by level
H1
0
H2
0
H3
0
H4
0
H5
0
H6
0
QUICK CHECKLIST
A clean outline starts with one H1, steps down one level at a time (H1 → H2 → H3), and has no empty headings. Going back up, such as H4 → H2, is fine.
What the Heading Structure Checker Finds in Your Page
This heading structure checker reads the H1-H6 headings in your HTML or Markdown and shows them as an indented outline, the same way a table of contents would list them.
It then points out the problems that are easy to miss while writing: a missing or repeated H1, a level that skips (H2 to H4), and an empty heading. Each issue includes a line number so you can jump straight to it.
Paste a draft before you publish, or paste the source of a live page you are auditing. Nothing is uploaded; the check runs in your browser.
When to Check Your Heading Hierarchy
Before you publish a post
Paste the HTML or Markdown of a blog post or landing page and confirm the outline reads cleanly from H1 down before it goes live.
Reviewing a Markdown draft
Writing in Markdown, README files, or docs? Check the # structure without converting it to HTML first.
Auditing an existing page
Copy the HTML of a page that is stuck in search results and look for repeated H1s, jumps in level, or headings chosen for their size.
Giving feedback to writers
Point to exact lines when a contributor's draft uses the wrong heading levels, instead of describing the problem in general terms.
How to Check a Page Outline
- Choose the HTML or Markdown tab.
- Paste your HTML source or Markdown text into the box (or click Load sample to see an example).
- Read the outline on the left. Headings with problems are highlighted.
- Go through the issues list and fix each line it points to. The result updates as you edit and paste again.
Note: The check runs as soon as you paste. There is no submit button, and nothing leaves your browser.
What the Checker Does and Doesn't Cover
- It checks heading tags and heading syntax only. It does not judge how large a heading looks or how the page renders.
- HTML mode reads h1-h6 tags and ignores comments and script, style, and template blocks. It uses pattern matching, not a full browser, so headings added later by JavaScript will not appear unless you paste the rendered HTML.
- Markdown mode reads # headings and underlined headings. It skips YAML front matter and fenced code blocks. Pasting a mix of HTML and Markdown is not supported; check each separately.
- Tags and formatting inside a heading are removed, and only the text is shown in the outline.
- The checker compares each heading with the one before it. A heading that goes back up (H4 to H2) is not reported.
H1 to H6: What Each Level Is For
A lower number means a higher place in the outline. A typical way to use each level:
| Level | Typical role | How many per page |
|---|---|---|
| H1 | Main topic of the page, usually the title | Usually 1 |
| H2 | Major sections of the page | As many as needed |
| H3 | Subsections inside an H2 | As many as needed |
| H4 | Details inside an H3 | Only when needed |
| H5-H6 | Very fine subdivisions, rarely used | Only when needed |
Going down one level at a time (H1 → H2 → H3) keeps the outline easy to follow. Going back up, for example from H4 to the next H2, is normal when a new section starts.
Why Heading Order Matters for SEO and Screen Readers
What a clean heading outline does for search engines and for people.
Headings are the outline of a page
Heading tags describe how a page is organized, not how it looks. Search engines and screen readers use them to see the sections of a page and how they relate, so each tag should reflect where the section sits in the outline.
Multiple H1s: what Google has said
Google's John Mueller has said its systems don't have a problem with multiple H1 headings on a page, so extra H1s are not a ranking penalty. A single H1 is still a clear convention for the page title, which is why the checker reports extra H1s as a warning and not an error.
Skipped levels make the outline harder to follow
When a page jumps from H2 to H4, the outline has a hole where an H3 should be. People who move through a page by headings with a screen reader get a structure that doesn't match what is on screen. Fix the level, and use CSS if you want a different size.
A short pre-publish check
Before you publish, confirm three things: there is an H1, the levels step down one at a time, and no heading is empty. Those three catch most of the structure problems this tool reports.
Common Heading Mistakes and How to Fix Them
Several H1s from page templates
A theme or page builder wraps the site name, a banner, and the post title in H1 tags, so one page ends up with three H1s.
💡 See the solution▼
Choosing a heading level for its font size
An H4 is used because it looks right, even though the section belongs under an H2. The outline now skips a level.
💡 See the solution▼
Empty heading tags left in the markup
A template or CMS block outputs an h3 with no text when a field is blank, and the empty tag ships with the page.
💡 See the solution▼
The page starts at H2 or H3
The first heading in the source is an H2 or H3, so the page has no H1, or the H1 comes after other headings.
💡 See the solution▼
Questions About H1 Tags and Heading Levels
Q.Should a page have only one H1?
A. Not for Google's sake: Google's John Mueller has said its systems don't have a problem with multiple H1 headings on a page. One H1 is still the simplest pattern, because it gives readers, editors, and screen reader users a single page title to anchor the outline. That is why this checker lists multiple H1s as a warning rather than an error.
Q.What does the checker flag?
A. It flags five things: a first heading that is not an H1, a page with no H1, more than one H1, a heading level that jumps down by more than one step (for example H2 to H4), and headings with no text. Jumping back up, such as H4 to H2, is not flagged.
Q.Why is skipping a heading level (H2 to H4) a problem?
A. The outline has a gap: an H4 appears without an H3 above it. People who navigate by headings with a screen reader hear a structure that doesn't match the page, and editors can't tell whether a section is missing. The usual cause is picking a heading tag for its font size. Choose the level by where the section sits in the outline, and set the size in CSS.
Q.How do I check the headings on a live page?
A. Open the page, copy its HTML from your browser's developer tools or from view-source, and paste it into the HTML tab. If the page builds its headings with JavaScript, copy the rendered HTML from the Elements panel instead, because this tool does not run scripts.
Q.Can I check Markdown headings?
A. Yes. Switch to the Markdown tab and paste your text. It reads # to ###### headings, closing hashes, and underlined headings (a line followed by === or ---). It skips YAML front matter and fenced code blocks, so a # comment inside a code sample is not counted as a heading.
Q.Is my HTML or Markdown uploaded anywhere?
A. No. The analysis runs in JavaScript in your browser, and the text you paste is never sent to a server. Closing or refreshing the page clears it.
Your feedback
makes this tool better.
Tell us which features you'd like, what should be fixed, or which new tool you'd like to see. An engineer reads every submission and uses it to guide development.