Free SEO Tool

Free Heading Structure Extractor

Paste 5-15 URLs. Get every page's H1-H6 outline as a nested view, side by side. Audit your own pages and competitors at once.

4.6on G2
4.8on Trustpilot
Used by 55,000+ SEOs and content teams

What the Heading Structure Extractor does

Auditing heading structure one URL at a time is fine for a single check, but tedious when you are reviewing your top 20 organic pages or studying 5 competitors before writing a new pillar post. The Heading Structure Extractor takes a list of URLs and returns each page's nested H1-H6 outline in one view.

Each result is a collapsible accordion: click a URL to see its per-tag count summary plus the indented hierarchy. Compare side by side. Copy any page's outline. Spot missing H1s, duplicate H1s, and skipped levels at a glance. The bulk view is what makes competitor outline analysis fast enough to be worth doing.

How to extract outlines

Five steps from URL list to clean outlines.

1

Paste URLs (one per line)

Drop in 5-15 public URLs — your own pages, competitors, a mix. Public URLs only.

2

Click Extract Structure

The tool fetches each URL server-side and parses every H1-H6 in the rendered HTML.

3

Click any URL row

Each result expands to show the per-tag count summary and the nested outline.

4

Copy or compare

Use the Copy button to grab a single URL's outline, or open multiple to compare side by side.

5

Edit and re-extract

Make CMS fixes for problem URLs, paste them again, confirm clean outlines.

When SEO teams use it

Six common workflows where bulk outline extraction earns its keep.

Auditing competitor outlines for a new pillar post

Run the top 5 SERP results for your target keyword. The H2 patterns you see are what Google currently rewards for that intent. Build your outline to match the patterns plus add one section nobody else covers.

Bulk QA across your top organic pages

Audit your top 20 organic pages quarterly. Run them through the extractor in one batch. The outliers (multiple H1s, skipped levels, 30+ H2s) become your priority fix list.

Theme migration regression check

Migrating from one CMS theme to another. Run a representative sample of post types and pages before and after the switch. Diff the outlines. Anywhere the theme broke the heading structure, you catch it before SEO impact.

Inventorying a newly inherited site

You took over a 200-page site and need a content audit. Run the top 30 organic pages through the extractor; the outline diff against intended structure is your audit report's opening section.

Pre-publish content QA across multiple staging URLs

Your team has 6 posts queued for publish this week. Paste all staging URLs in one batch, see all 6 outlines side by side. Catch structure issues before publish.

Accessibility compliance check

WCAG 2.1 AA flags heading hierarchy issues. Run all template pages through the extractor; pages with broken outlines fail accessibility audits. The fix is usually one CSS or template-tag change.

Platform-specific setup guides

How to deploy structural fixes across the CMSes most teams use.

WordPress

  1. Run your top 20 organic URLs through the extractor monthly. Common issues: theme wrapping logo as H1, footer widgets contributing H3s.
  2. Fix in header.php (logo) and footer.php (widget titles). Use CSS to keep visuals identical — only change the tag from H to p.
  3. Re-run extraction after the fix to confirm clean outlines.

Webflow

  1. Run all CMS template pages plus key static pages. Webflow is generally clean, but custom templates can introduce extra H1s in symbols.
  2. Fix in Designer: change tags on Heading elements via the dropdown. CMS items inherit from their template.
  3. Publish, re-run extraction to confirm.

Ghost

  1. Run all post URLs plus the homepage and any custom pages. Ghost themes usually keep things clean.
  2. If a custom theme introduced extra H1s in the header or sidebar, edit the .hbs template and change H tags to span/p.
  3. Re-run extraction. Ghost theme changes deploy on save.

Next.js / React custom builds

  1. Run all routes by category: home, marketing, docs, blog. Single-page apps are the most common cause of "no headings detected".
  2. Confirm getStaticProps or getServerSideProps fills H tags into the SSR HTML, not just JSON.
  3. Re-run extraction. JS-only renders are the typical culprit; SSR fixes it.

Squarespace / Wix

  1. These platforms hide tag selection in style panels. Look for "Heading 1/2/3" labels in text editor toolbars.
  2. Audit all template pages plus your top organic pages. Limited fix options exist if the platform hardcodes site logo as H1.
  3. Run extraction to identify which template pages have outline issues; prioritize fixes by SEO traffic.

Grigora vs. other extractors

A side-by-side of the alternatives.

CapabilityGrigoraScreaming FrogSEMrush AuditFree generatorsManual
Bulk URL extractionYes (5-15)Yes (paid)Single URLSingle URLManual
Free + unlimitedYesLimited freeFree trialFree, ad-supportedManual only
Nested hierarchy viewYesYesYesFlat listManual
All H1-H6 tagsYesYesYesH1-H3 onlyManual
Per-URL summaryYesYesYesYesManual
Copy outlinesYesYes (paid)YesYesManual
No signupYesAccount requiredAccount requiredYesYes
Result speed<10 sec for 5 URLs<60 sec<5 sec single<5 sec singleManual

Common errors and how to fix them

Eight issues SEOs hit when running bulk outline audits.

Extraction returns no headings for a URL that clearly has them

Cause: Page is a single-page app that injects content via JavaScript after initial render.

Fix: For SPAs, server-render the headings (Next.js getStaticProps, Nuxt asyncData, etc.). If the page cannot be SSRed, this tool will miss headings — use a Lighthouse audit run from a real browser instead.

Outline includes navigation or footer headings

Cause: Theme uses H2 or H3 for "Recent posts", footer column titles, or sidebar widgets.

Fix: Convert non-content headings to <p> with a heading-style CSS class. Reserve real heading tags for the article body. Sidebars and footers should not contribute to the page outline.

Multiple H1s detected on one URL

Cause: Theme wraps both site logo and post title in H1, or you have an article H1 plus a sidebar H1.

Fix: In your theme, change the logo to <p class="site-title">. Keep one H1 per page representing the actual page topic.

Skipped heading level (H2 to H4)

Cause: A developer or content team picked H4 because it "looked the right size", ignoring the missing H3.

Fix: Either insert an H3 or demote the H4 to H3. Use CSS for visual size; keep the tag semantically correct.

One URL fails to load while the rest succeed

Cause: Target server is slow, behind a strict WAF, or rate-limiting our resolver.

Fix: Retry that URL alone after 30 seconds. If it persistently fails, the site is blocking automated fetches; load the page yourself and view source manually.

Headings show HTML entities (&amp;)

Cause: Source HTML uses entity encoding for special characters.

Fix: No fix needed — the encoding is fine. & renders as & in browsers and is read identically by Google. The output preserves raw HTML for transparency.

Page has 30+ H2s

Cause: You used H2s for every visual subheading without an H3 layer.

Fix: Group related H2s under broader H2s, demoting the inner ones to H3. A 30-H2 page reads as a flat list of equal-weight topics; structure matters more than count.

Structure changes between fetches

Cause: CMS A/B test, dynamic content, or you edited the page between extractions.

Fix: Re-run extraction. If the structure is genuinely changing per request (rare), pin the variant in the CMS or set a feature flag.

Original data from our 2026 outline study

What we observed across 4,000 random URLs run through bulk extraction.

23
Average headings per public web page (sample n=4,000)
8
Median H2 count on top-3 SERP pages
38%
Pages with at least one structure issue
14 min
Time saved auditing 10 URLs vs. one-at-a-time

Frequently asked questions

Twelve answers covering the most-asked questions about bulk outline extraction.

Related free tools

Other utilities that pair well with the Heading Structure Extractor.

Audit a batch of URLs right now

Paste your top 5 organic pages and 5 competitors. See the diff. Free, unlimited, no signup.

Try the Heading Structure Extractor