The outline, in the order it is written
One row per heading. Not grouped, not summarised, not counted for you.
-
01
Every heading, in document order
h1 through h6, in the order they appear in the HTML. That is the order a crawler reads them in, and reordering them for tidiness would hide the thing you came to see.
-
02
Level and position together
Each row carries its tag level and its place in the sequence. Read down the level column and a jump from h2 straight to h4 stops being a theory.
-
03
Character length
The length of each heading's text. Enough to spot the two-word h2 that says nothing and the sixty-word h1 that was meant to be a paragraph.
-
04
Twenty-five pages in one table
Every page in the run shares a url column, so a whole section of a site sorts, filters and pivots in a spreadsheet.
Five patterns worth a filter
The heading table earns its keep in about five minutes if you know what to sort by.
-
More than one h1
A page with four h1s does not have a main heading, it has four competing ones. Filter the level column to h1 and count the rows per URL.
-
No h1 at all
Usually a template that styles a heading with CSS instead of marking it up. The page looks finished and reads as headless.
-
Levels that skip a step
An h4 directly under an h2 is a broken outline, and it almost always means the tag was chosen for its font size rather than its place in the structure.
-
Empty or one-word headings
Sort by length ascending. A heading with no text is a layout element wearing a heading tag, and screen readers announce it as a section that is not there.
-
The same heading on every page
Templated headings repeated across a whole section tell a crawler the pages are interchangeable. Sometimes they are. Usually that was not the intention.
What it will not tell you
Stated here rather than discovered later.
-
01
Static HTML only
Headings added by JavaScript after load are not in the HTML the server sent. If the table comes back empty on a page that clearly has headings, that is why, and it is worth knowing.
-
02
It reads markup, not the rendered page
A perfectly nested outline can still look wrong on screen, and a page that looks right can be a stack of styled divs. This tool only sees the first of those.
-
03
It does not judge the wording
Whether a heading describes the section under it is a reading task. The tool gives you the text and the structure; the sentence is yours.
-
04
Twenty-five URLs per run
It runs in a browser tab. Beyond that the tables get slow and it stops being polite to the server on the other end.
Reasonable questions
Does a page need exactly one h1?
Google has said for years that multiple h1 tags will not break a page, and that is true. It is still worth knowing how many you have, because more than one usually means the tag was picked for its size rather than for its meaning.
Do skipped heading levels hurt rankings?
Rarely on their own. They do affect how a screen reader user navigates a page, and they are usually a symptom of a template that chooses tags by appearance, which is worth fixing at the source rather than page by page.
Why is a heading missing from the table?
Either it is added by JavaScript after the page loads, or it is not marked up as a heading at all: styled text that looks like one but is a div or a paragraph in the HTML.
Can I check headings on a site I do not own?
Yes. It reads exactly what any visitor's browser would read, one page at a time, with a pause between requests.
Headings are one tab of the checker
The same run returns titles, meta descriptions, word counts, links, images and structured data as well. It is one tool with seven tables and seven CSV exports, not seven separate tools you have to run one after another.
Other checks the same tool runs: Bulk SEO checker, Meta tag checker, Alt text checker, Word count checker, Canonical checker, Open Graph checker, Schema checker