Does your page have a real structure?
Headings are the only outline a page has, and most are chosen for their size.
Two audiences read the same outline
Search works out what a page covers from its headings, and a screen reader user moves through the page by jumping between them. Both are reading a structure that was usually decided by which size looked right.
A heading picked for its size
An h4 used because h3 looked too big leaves a gap in the outline. To anyone navigating by heading that gap reads as a missing section, and they go looking for content that is not there.
A wall of text nobody enters
Readers scan before they commit. A long page with two headings gives them nothing to scan, so most of them do not commit, and search cannot tell which part answers a question.
It never shows in the design
The page looks exactly the same whether its headings are in order or not. That is why this goes unnoticed for the whole life of a template.
One page in, its outline out
Paste any page
The source, or the text with its markup. No sign-up, nothing installed.
It reads the outline
Every h1 to h6 in order, minus anything a screen reader is told to ignore.
You get what is wrong with it
Where the outline breaks, why it matters to the two audiences reading it, and the level it should be.
What it checks
Exactly one h1, in the right place
The page's title in its own words. More than one says the page is about several things equally; none means an outline with no top.
Levels that skip
An h2 straight to an h4 leaves a hole. Going back up a level is a new section and is not a fault, which is why the direction matters.
Headings with nothing in them
A heading wrapped around an icon still appears in the jump list, as a blank entry that tells the reader nothing about where they landed.
Long pages with no sections
Words counted against headings, so a page that is really a wall of text is named as one rather than passing because it has an h1.
The same heading over and over
Identical headings make the outline useless for navigating, because every entry in the list reads the same. Common on pages built from repeated blocks.
Headings that are paragraphs
A heading is read at a glance. Past a line or two it stops being a signpost and becomes the content it was meant to introduce.
Straight talk about what it cannot see
It reads the headings in the markup you give it, which is exactly what search and a screen reader read.
Text that only looks like a heading is invisible
Big bold text in a div is not a heading here, and it is not one to search or a screen reader either. That is the finding, not a gap in the tool.
It cannot tell you a heading is the right heading
Whether it describes the section under it is a judgement about your writing. This checks the structure, not the words.
It ignores what you tell it to ignore
Anything marked aria-hidden is left out, because a screen reader leaves it out. A duplicated marquee is not a duplicated heading.
Your page never leaves your machine
The whole check runs in your browser. Nothing is uploaded, which is also why there is no limit on it.
Look at the outline you actually shipped
It takes one paste, and the fix is usually changing a number in a tag.
