Screpy’s Heading Structure Analyzer lists a page’s H1–H6 elements in source order and highlights empty headings, skipped levels and missing or multiple H1s. Use the outline to check how sections relate before changing the page. Counts and warnings describe the fetched HTML; they are not a Google ranking score or a complete accessibility assessment.
Read the HTML outline in source order
Enter one public HTTP or HTTPS page URL that returns readable HTML. The report shows each observed heading’s level, extracted text and source line. Read the list from top to bottom before looking at individual warnings. A reader should be able to understand the broad progression without needing every paragraph.
The bars count headings at each level; a taller bar is not better. Indentation represents HTML levels, not font size, visual placement or a score for importance. A large paragraph can look like a heading without being an H2, and a styled H3 remains an H3 in this extracted outline.
Up to 1,000 heading rows are retained, with at most 500 characters of text per heading. Counts can therefore cover more headings than the visible retained list. Truncation or a row limit produces a partial-coverage notice. Do not interpret a shortened label as the full original text, or a retained subset as the complete page outline.
Match heading levels to sections and subsections
W3C WAI’s heading guidance explains how headings communicate organization and support navigation, including with assistive technology. Use levels to express relationships rather than choosing whichever element looks the right size.
This fictional outline is for a beginner pottery-workshop page. It illustrates a possible organization, not an observed scan or a requirement for every service page.
| Level | Example heading | Relationship |
|---|---|---|
| H1 | Pottery Workshops for Beginners | Main subject of the page |
| H2 | What you will make | Main section beneath that subject |
| H3 | Your first bowl | Detail belonging to the preceding H2 |
| H2 | Dates and booking | New section alongside the previous H2 |
| H3 | Choosing a session | Detail within dates and booking |
If “Your first bowl” is marked H4 directly after the H2, review whether it should be H3 or whether a genuine parent section is missing. Do not insert an empty H3 just to silence the warning. The relationship should come from the content.
Returning from H4 to H2 can correctly close subsections and begin another main section. That is different from jumping deeper from H2 to H4. Fixed regions such as navigation or sidebars also need context; their useful heading levels should not be changed solely to make every adjacent item in the full-page list descend one step.
Review findings in their page context
An empty-heading finding means the extractor found no heading text. Locate it using the source line, then add meaningful wording or remove an unused element. Check whether a template emitted an empty wrapper rather than assuming the article editor is responsible. This text extraction is not a computed accessible-name analysis.
A missing H1 asks you to review how the page’s main subject is marked up. Multiple H1s ask you to inspect the hierarchy: a repeated site logo heading plus an article heading may reflect a shared-template decision. A clear main heading is a practical starting point, but the warning does not claim an automatic Google penalty. Do not delete useful content simply to force a count.
Read the words as well as the levels. “More information” repeated across several sections provides less direction than labels naming the question or topic that follows. Use natural topic language without putting the same keyword in every heading. The analyzer cannot judge whether a heading accurately describes its section.
For alternative wording, the AI Heading Generator can supply drafts. Review those drafts against the actual content; generating a label does not establish the correct place or level for it.
Publish semantic changes and check again
Select the correct heading element in your CMS or component, then apply visual styling separately. MDN’s heading-element reference describes the six section levels and cautions against using them merely to resize text. Changing CSS alone does not repair a wrong HTML level.
Review shared navigation, footer and sidebar headings alongside the main content. A template change can affect many pages, so check a representative second page if the component is reused. Publish the correction and rerun the same URL. Compare wording, sequence and parent relationships with the intended outline instead of aiming for identical counts at every level.
The checker reads raw HTML without running JavaScript. It does not determine CSS visibility, the browser’s final reading order or computed heading roles and levels. Inspect the rendered page separately where scripts or accessibility attributes change the experience.
Use the On-Page SEO Checker for broader page signals. The browser’s document title is a separate field; the AI SEO Title Generator helps draft that wording. A good heading outline supports understandable content, but does not by itself verify every SEO or accessibility condition.
Use JavaScript SEO Checker when you need to compare the original HTML with a captured rendered DOM. It shows observed metadata and content changes with explicit resource and observation limits, not a prediction of what Google indexes.