Has at least 3 section headings
Headings are how agents (and humans) navigate long documents. Pages without enough headings read as a wall of text to embeddings models, which can't tell where one section ends and another begins.
How the check decides
The check counts the number of <h1>, <h2>, and <h3> elements on the page and asserts the total is at least 3.
How to implement it
Break long pages into sections with descriptive <h2> or <h3> headings. If your page is too short to need three headings, that’s a signal it should probably be merged with sibling content rather than published as a standalone page.
Pass
<h1>Install a14y</h1>
<h2>Prerequisites</h2>
<h2>From npm</h2>
<h2>From source</h2>
Fail
<h1>Install a14y</h1>
<p>Run npm install a14y.</p>
Common gotchas
The check counts <h1>, <h2>, and <h3> only — <h4> through <h6> don’t count. Most embeddings models care about the top three levels because deeper levels rarely give meaningful semantic boundaries. If you’ve structured a page with one h1 followed by a flat list of h4s, the check will fail despite the page being well-organised.
Don’t pad the page with empty headings just to clear the threshold. If a page genuinely has fewer than three sections, the right move is to either combine it with a sibling page or expand the content so each heading carries its own substantive sub-section. The threshold is a smell test for “is this page navigable”, not a checkbox to game.
Frameworks that auto-generate a “Table of Contents” sidebar from headings (Docusaurus, Astro Starlight, Vitepress) inherently encourage authors to use headings well — adopting one of those is often a faster fix than retrofitting headings into existing prose by hand.