BlogFindings
Heading structure for AI search: 311 of 704 article pages ran over 300 words with no heading
Lantad asked all 1,419 hostnames in this repository's committed corpus for robots.txt on 25 September 2026, read each home page with no JavaScript executed, followed one article shaped link from it, and read that page the same way. 706 article pages answered, of which 704 arrived whole. 311 of the 704 carried at least one unbroken stretch of more than 300 words with no heading anywhere in it, 237 skipped a heading level, and not one of the 704 carried a single text block longer than 1,200 words.
Two questions sit underneath it, and they have different kinds of answer. The first is what the receiving systems say they do with headings, which is a question for their documentation and not for anybody's opinion. The second is what sites actually do, which is a question for a fetch. This post answers both, in that order, and they do not point the same way. The documentation is thinner and more equivocal than the advice built on top of it, and the pages are structured better than the advice assumes, except in one respect that nobody talks about.
In short
- Heading structure for AI search rests on two pieces of documentation that disagree. Google's SEO starter guide, which carries the date 2025-12-10, says that from Google Search's perspective it does not matter if headings are used out of order and that there is no ideal number of them. MDN's heading elements reference, last modified 26 August 2026, says not to skip heading levels and that a page should generally have a single h1.
- Lantad read 704 article pages on 25 September 2026 and found 311 of them, 44 percent, carrying at least one stretch of more than 300 words with no heading in it. 132 of those stretches ran past 600 words and 33 ran past 1,200.
- News was the least chunked category measured on 25 September 2026: 32 of 51 news article pages carried a stretch over 300 words, against 34 of 97 SaaS pages. The median longest stretch on a news page was 431 words and on a SaaS page 230.
- 237 of the 704 pages skipped at least one heading level, 61 carried no h1 in the main content and 65 carried more than one. An Adyen campaign page carried 121 h1 elements against 5 h2 elements.
- The wall of text is not what breaks. No page among the 704 carried a single text block longer than 1,200 words, the largest anywhere was 790 words, and the median largest block was 69 words.
| Stage | Count | What happened |
|---|---|---|
| Hostnames asked | 1,419 | The committed corpus, an editorial frame rather than a random draw |
| robots.txt disallowed LantadBot at the root | 33 | Never asked for a home page |
| Home page did not answer 200 with HTML | 326 | 211 answered 403, 53 answered 503, 9 answered 202, and 33 requests failed before a status arrived |
| Home page carried no article shaped link | 323 | No same host link two segments deep with a slug in its last segment |
| robots.txt disallowed the article path | 7 | Not fetched |
| Article did not answer 200 with HTML | 19 | 10 answered 403, 6 answered 404 |
| Request threw before completing | 5 | Connection reset or malformed redirect |
| Article pages read | 706 | Of which 2 exceeded the three megabyte capture cap and were dropped |
| Article pages analysed | 704 | The denominator for every figure below |
Does heading structure for AI search matter?
The honest answer from primary documentation is narrower than the advice, and in one place it contradicts it outright. Google's SEO starter guide, which carries the date 2025-12-10 at the foot of the page, keeps a section headed "Number and order of headings" among its list of things people believe that are not so. It reads: "Having your headings in semantic order is fantastic for screen readers, but from Google Search perspective, it doesn't matter if you're using them out of order." It goes further in the same paragraph: "There's also no magical, ideal amount of headings a given page should have. However, if you think it's too much, then it probably is."
The same page does ask for headings, just for a different reason. Under the attributes of helpful content it says to "Break up long content into paragraphs and sections, and provide headings to help users navigate your pages." That is a readability instruction aimed at people, and it is the one that survives contact with the evidence. Nothing on the page promises a ranking effect from a heading, and Google's page on AI features in Search, carrying the same 2025-12-10 date, closes the door on the version of the claim that matters most here: "There are no additional requirements to appear in AI Overviews or AI Mode, nor other special optimizations necessary."
The accessibility documentation is stricter and says so for its own reasons. MDN's reference on the heading elements, last modified 26 August 2026, is unambiguous: "Do not skip heading levels: always start from h1, followed by h2 and so on", and "A page should generally have a single h1 element that describes the content of the page". The W3C's tutorial on headings, updated 4 May 2017, gives the mechanism rather than the rule: headings "communicate the organization of the content on the page", and browsers, plug-ins and assistive technologies use them for in page navigation. A retrieval system reading raw markup is in the same position as a plug-in. It is not told where a passage begins; it infers it.
So there are two separate claims in circulation and only one of them is documented. That headings help a machine find the boundary of a passage is a mechanism you can read off the spec. That a particular count or a particular nesting order is rewarded is not documented anywhere first party, and the one measured study this site has covered, the structure ablation across six generative engines, is a third party result rather than a vendor commitment. Keeping those apart is the difference between generative engine optimization and folklore.
| Source | Date on the page | What it says about headings |
|---|---|---|
| Google SEO starter guide | 2025-12-10 | Order does not matter to Google Search; no ideal number exists |
| Google AI features in Search | 2025-12-10 | No additional requirements or special optimizations for AI Overviews |
| MDN heading elements reference | 26 August 2026 | Do not skip levels; generally one h1 per page |
| W3C WAI headings tutorial | 4 May 2017 | Headings communicate organization and drive in page navigation |
What was measured, and what was not
Home pages are the wrong surface for this question. A home page is a set of entry points and is under no obligation to carry prose at all, so counting its headings measures a template. The question only means something on a page whose job is to hold an argument, so this run went one link deeper.
From each home page that answered, the crawler took every same host link, discarded anything with a file extension it could not read, and kept those at least two path segments deep whose final segment read like a slug: twelve characters or more with at least two hyphens in it. Among those candidates the link carrying the most anchor words won, which prefers a headline over a navigation label. The rule names no section in any language, so it picks up an article at /actualites/le-rapport-annuel-2026 as readily as one at /blog/. That matters for a corpus with government sites in Germany, newspapers in Colombia and universities in the Netherlands in it. 323 home pages offered nothing matching the rule and were dropped rather than guessed at.
What that buys in coverage it costs in precision, and the cost is worth stating. The heuristic sometimes lands on a tag listing or an index page rather than an article, and a listing page has different structure for good reason. It also takes one page per site, so nothing here describes a site, only a page on it. Prose was counted after removing script, style, noscript, template, svg, iframe, video, audio and canvas content, and after removing nav, footer, aside and form containers, which is the same separation of chrome from content an extractor has to make before it can score anything.
The header element was deliberately left in. Article templates routinely wrap the headline in one, and dropping it would report the page's only h1 as missing: on this set that single decision is the difference between 61 pages with no h1 and 182, which is the trap an h1 inside a header set for this scanner once already. Two pages exceeded the three megabyte capture cap set in core/src/config.ts and were dropped rather than scored on a fragment, because a truncated document ends mid element and an unclosed script would otherwise be counted as prose. Both are settings this project chose, not findings about the web, and the methodology page is where the rest of them live.
Flow: 1,419 hostnames to GET /robots.txt; GET /robots.txt (allowed) to GET home page; GET /robots.txt (33 disallowed) to 713 dropped; GET home page (200 HTML) to Pick article link; GET home page (326 did not) to 713 dropped; Pick article link (slug found) to GET article page; Pick article link (323 none) to 713 dropped; GET article page (read whole) to 704 analysed; GET article page (31 failed) to 713 dropped.
How far does a crawler read before the next heading?
This is the figure the advice is really about, and it is the one nobody publishes. Split each page's main content at every heading element and count the words in each gap, including the gap before the first heading and the one after the last. The largest of those gaps is how far a system picking a passage to quote must read to find the boundary of one, with nothing in the markup telling it where an idea stops and the next starts.
Across the 704 pages the median largest gap was 260 words and the ninetieth percentile was 853. 311 pages, 44 percent of the set, carried at least one gap of more than 300 words. 132 carried one over 600 and 33 carried one over 1,200. The threshold this scanner uses, roughly one heading per 300 words, is a setting in core/src/config.ts rather than a measurement of anything: someone chose it, it is tested, and it is not evidence that 300 is where retrieval degrades. Nobody outside the engines can observe that, which is why this post reports the distribution and leaves the cliff unnamed.
The long tail is where the shape of the problem shows. A podcast site, ganglandhistorypodcast.com, publishes full episode transcripts, and its page on the Cerrito crime family carries 16,018 words of prose under 15 headings, one of which is the word "Episode Transcript" followed by 10,394 unbroken words. The markup is valid, the h1 is correct, the transcript is genuinely useful, and a machine asked a question about the middle of it has nothing to chunk on. The same shape appears on a Slate culture piece about the Netflix Lizzie Borden series, where 3,122 words of prose carry five headings and one run of 2,855 words.
Here is the finding that cuts the other way, and it is the more interesting half. If the failure were writers producing undifferentiated walls of text, it would show up as enormous single elements. It does not. Not one page in the 704 carried a text block longer than 1,200 tokens, the threshold this scanner flags as a wall of text. The largest single block anywhere in the set was 790 words, and the median largest block per page was 69. Prose on the web is already broken into paragraphs, and it is broken finely. What is missing is not the paragraph break. It is the heading above the group of paragraphs, which is the only break carrying a label that says what the group is about.
Which kinds of site leave the longest stretches?
The corpus is stratified by what a site is built to do, so the funnel can be cut by category. The gradient is steep and it runs the wrong way for anybody hoping the well resourced publishers have this solved.
News article pages were the least chunked of the eight industry strata: 32 of 51 carried a stretch over 300 words, and the median longest stretch on a news page was 431 words. Education followed at 43 of 78. At the other end, SaaS marketing pages carried the shortest stretches, 34 of 97 over the threshold with a median longest stretch of 230 words, and ecommerce pages the shortest of all at a 155 word median. The ordering is not mysterious once you look at what these pages are. A SaaS product page is assembled from components, and every component ships with a heading because that is how the design system works. A news article is one field of body copy entered into a CMS by a person writing prose, and a person writing prose puts in a heading when the argument turns, which on a thousand word news story is rarely.
That is worth sitting with, because news sites are disproportionately what answer engines cite. A category that publishes the most citable material is also the category shipping the longest unlabelled runs of it. Nothing here says that costs them citations, and this run measured no citations at all. It says only that the structural signal an extractor could use is thinnest exactly where the extractable material is richest.
The platform strata point the same way with a different cause. Pages on component driven marketing stacks carry headings because the stack emits them, which is the same reason a Next.js site ships a payload many times its prose and a Shopify store ships its catalogue as open JSON. The structure follows the tooling rather than the intent, and it happens to land the right way here. Heading level discipline is a separate matter and did not follow the same gradient: travel led at 38 percent of pages skipping a level, healthcare was cleanest at 25 percent, and the strata in between are close enough together that the differences are not worth a story.
| Category | Pages read | With a stretch over 300 words | Share | Median longest stretch |
|---|---|---|---|---|
| News | 51 | 32 | 63% | 431 words |
| Education | 78 | 43 | 55% | 333 words |
| Finance | 75 | 36 | 48% | 297 words |
| Government | 62 | 29 | 47% | 282 words |
| Healthcare | 69 | 32 | 46% | 272 words |
| Travel | 52 | 22 | 42% | 257 words |
| Ecommerce | 40 | 15 | 38% | 155 words |
| SaaS | 97 | 34 | 35% | 230 words |
Heading levels, h1 counts, and one page with 121 of them
Level discipline is where the documentation splits, so it is worth reporting separately from density. 237 of the 704 pages, 34 percent, contained at least one place where a heading's level exceeded the previous heading's by more than one: an h1 followed directly by an h3, or an h2 followed by an h5. On Pipedrive's guide to follow up emails, a page carrying 19 h2 elements, 19 h3 elements and 15 h4 elements in a careful outline, the very first heading after the h1 is an h3. By MDN's rule that is a defect. By Google's own starter guide it does not matter to Google Search at all. Both statements are true and they are answers to different questions, which is the sort of thing a reader deserves to be told rather than sold a rule about.
The h1 count came out better than the folklore expects. 578 pages carried exactly one h1 in their main content, 61 carried none and 65 carried more than one. Slate's culture article carries five h1 elements, of which one is the headline and the rest are section furniture: "Popular in Culture", "Whack Job: A History of Axe Murder" and "Get the best of culture". A machine looking for the page's subject in its h1 finds four wrong answers alongside the right one.
The extreme case is worth naming because it shows what a page builder does when headings are treated as type styles. An Adyen campaign page at /campaigns/2026/the-spotlight-h1-enterprises carries 121 h1 elements against 5 h2 elements, with most of the h1 text repeated twice in immediate succession. One of them reads "P r o d u c t u p d a t e / E n t e r p r i s e s", letter spaced with real space characters in the markup, so a crawler reads it as twenty separate single letter words. MDN's line covers exactly this: "Do not use heading elements to resize text." The page is not doing anything unusual by 2026 standards; it is a visual design expressed in heading tags, and the tags then say something false about the document.
None of the 704 pages is broken in the sense that matters most, which is that a crawler could reach them and read words. That is the floor, and 17 of 380 home pages failed to clear it in an earlier run, as did 11 of 271 pages that returned no words without JavaScript. Heading structure is the next question up, and it is only worth asking of a page whose text arrives at all. Seventeen pages in this set carried no heading whatsoever in their main content, among them a Publix ordering page whose only four headings, all in chrome, read "Shop with us", "Work with us", "Services you'll love" and "More ways to shop".
-
Exactly one h1578 pages What MDN calls the general case. The majority outcome by a wide margin. -
More than one h165 pages Allowed by the HTML standard, not best practice per MDN. Highest seen was 121 on one page. -
No h1 in main content61 pages Would have read as 182 had the header element been treated as chrome. -
A skipped heading level237 pages A defect to MDN and the W3C. Explicitly not a factor to Google Search. -
No heading at all17 pages Nothing in the markup labels any part of the document. -
A block over 1,200 words0 pages The wall of text this scanner flags did not occur once. Largest block anywhere was 790 words.
What to check on your own site
The check that matters is not a count and not an outline. It is the one figure this post measured: open a page that carries an argument, and find the longest run of words between two headings. If that run is several hundred words, a retrieval system reading your markup has no labelled boundary inside it, and neither does a reader skimming for the part they came for. Everything else on the list below is cheaper to fix and matters less.
Do it on the bytes a crawler receives rather than on the rendered page, because those differ on more sites than most teams expect. Headings injected after hydration are invisible to a fetch that runs no script, which is the whole subject of prose parity and the reason this scanner scores the raw response first. What GPTBot sees will show you the raw view of one URL, and the robots.txt tester will tell you whether a named AI crawler is allowed to ask for it in the first place. Access comes before structure: a perfectly outlined page behind a 403 scores nothing at all, and 211 home pages in this run answered exactly that.
Two things not to do, both of which follow from the documentation rather than from taste. Do not renumber your headings to satisfy an outline validator and expect a ranking change, because Google's starter guide says in its own words that order does not matter to Google Search. And do not add headings you would not have written for a reader. A heading that labels nothing is a heading an extractor will happily use as a passage boundary, which makes the passage worse, and the same starter guide has the sentence for it: if you think it is too much, then it probably is.
The honest position is that this is a readability decision with a retrieval side effect, not a ranking tactic. That is a smaller claim than the one the answer engine optimization industry generally makes, and it is the one the evidence supports. This site publishes the inconvenient version on purpose, which is also why it withholds a grade rather than guess when a scan comes back degraded, and why the crawlability study reports what it could not measure alongside what it could. If you want the same three requests run against your own pages, that is what a scan does, and the methodology says exactly which of the numbers above are measurements and which are settings.
Sample Illustrative, not a measurement of any real site.
- Longest run between headings The only figure here that describes the reader's experience and the extractor's problem at once. Measure it before anything else.
- The page has any heading at all 17 of 704 pages measured had none in their main content. Cheapest possible fix.
- Exactly one h1, and it names the page 578 of 704 already do this. Check the other headings are not h1 elements used as type styles.
- Headings reach a crawler without JavaScript A heading added during hydration is not in the bytes. Check the raw response, not the rendered page.
- No heading levels skipped A defect to MDN and the W3C, explicitly not a factor to Google Search. Fix it for readers using assistive technology.
- Headings are words, not letter spaced characters Spaces inserted between letters for visual effect are read as separate one letter words.
Lantad
Published .
Every guide to writing for answer engines says the same thing about structure: break the page into sections, put a heading on each one, and the machine will find the passage it needs. The advice is repeated often enough to have stopped being checked. This run checked it, in the only way that settles anything, by reading what real pages actually ship to a crawler that runs no JavaScript.
Common questions
Does heading structure for AI search matter?
The documented part is that headings tell a machine where one passage stops and the next starts, which the W3C tutorial on headings describes as communicating the organization of the content. The undocumented part is any promise of a ranking or citation effect from a particular count or nesting order. Google's SEO starter guide, dated 2025-12-10, states that heading order does not matter to Google Search and that there is no ideal number, and Google's page on AI features states that no special optimizations are necessary for AI Overviews or AI Mode.
How many words should there be between headings?
No engine publishes a number, and this post does not invent one. Lantad's scanner flags roughly one heading per 300 words, which is a setting chosen by this project rather than a measured threshold. Measured against it on 25 September 2026, 311 of 704 article pages carried at least one stretch longer than 300 words with no heading, the median longest stretch was 260 words and the ninetieth percentile was 853.
Is a wall of text the main structural problem on the web?
No, and the measurement says so plainly. Not one of the 704 article pages read on 25 September 2026 carried a single text block longer than 1,200 words, the largest block found anywhere was 790 words and the median largest block per page was 69 words. Prose is already broken into paragraphs. What is missing is the labelled heading above a group of them.
Does skipping a heading level hurt AI visibility?
Nothing first party says it does. MDN's heading elements reference, last modified 26 August 2026, says not to skip levels, and the W3C says skipping ranks should be avoided where possible, both for assistive technology rather than for retrieval. Google's starter guide says explicitly that out of order headings do not matter to Google Search. 237 of the 704 pages measured skipped at least one level, which makes it common enough that treating it as a visibility defect would misprice it.
See what AI can read on your site
Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.