How to use this tool

Bulk H1 & Heading Structure Checker

Data checkedHeadings

How to use the bulk heading checker

Back to the tool

Each URL is fetched once and every h1–h6 in the body is read back in document order: the outline a screen reader walks and a crawler indexes, not the one the layout appears to draw.

  1. 01

    Enter the URLs to check

    Single mode checks one address and runs on Enter. Switch to Bulk to paste a list, one URL per line, up to 30 per run. Headings come from the template, so paste one page of each kind: an article, a category, a product, the home page. Include the home page: it is the page most often built with no h1.

  2. 02

    Choose the URL normalization level

    Normalize URL rewrites each address before fetching. Full URL keeps the path and query but drops tracking parameters and the fragment; No query removes the query string; Domain only keeps the domain. Keep the full address when a template varies by query string: redirects are followed first, and the outline comes from the page the request lands on.

  3. 03

    Read the Headings column

    The cell answers the two questions a bulk run is for: how many h1 tags the page has, and whether anything is wrong. Other levels are counted in the panel. A warning mark means something the number cannot say: a skipped level, or a heading with no text. So 1 H1 can be marked, and 2 H1 can pass unmarked.

  4. 04

    Inspect a row and export the results

    View lists every heading in document order, indented by level, and marks the exact rows at fault: the conclusion says what is wrong, the marks say where. Copy table copies the rows tab-separated; Export CSV writes them to a file. Both carry the full outline, each heading as h2: text, with declared but empty written where a heading has none.

How to read the H1 and heading structure report

A row reads left to right: the address checked, where it landed, and what the outline on that page looks like.

Result table columns

URL
The address exactly as it was checked — after normalization, not always what you typed.
Resolved URL
Where the request ended and the status it ended on. Redirects are followed first, and the outline is read from that final page.
Headings
A warning mark when something is wrong, the h1 count, and the heading total. — means no heading tags. The h1 count doubles as a verdict: zero is a fault, one is right, more is worth a look.
Result
Whether the row finished, is still running, or stopped on an error. It says nothing about the outline itself.
Actions
View opens the detail panel for that row; Retry appears instead when the request never got through.

Detail panel verdicts

One h1, no skipped levels, every heading holds text.
Nothing to fix. Said only when the whole outline was read; see the last entry in this group.
No h1 — nothing states at the top level what this page is about.
The most serious finding. An h1 is the one heading that names the page rather than a section; without it a screen reader has nothing to announce at the top and a crawler nothing to weigh above the rest.
A heading holds no text — it adds a level and says nothing.
A heading tag with no text inside: usually a template writing a wrapper before its content arrives, or a heading holding an icon. It costs a level and returns nothing. Each row is marked declared but empty in the list.
The outline jumps from h2 straight to h5, so a section is announced with no parent.
The sentence names the two levels and the row is marked in the list. A screen reader jumping by heading reads an h5 after an h2 as a sub-sub-section of something never opened. Going back up is never reported.
2 h1 tags. HTML5 allows this; worth a look only if unintended.
A note, not a warning. HTML5 allows more than one h1, Google says it is not a problem, and most pages on modern frameworks have several. Reported because someone opening a heading checker is usually counting h1 tags.
No heading tags on this page.
The page has no h1–h6 at all. Not the same as an empty heading: there is no outline to walk, so every section of the page reads as one undifferentiated block.
Showing 200 of 412 headings on this page.
Only the first 200 headings are kept, so the conclusion covers that part only. Meanwhile the tool drops the h1 count and neither claims no h1 nor a clean outline: all three would speak for the whole page.