BlogFindings
How to format content for AI search: 80,761 of 104,474 list items were navigation
Lantad requested the robots.txt and then the home page of all 1,419 hostnames in this repository's committed corpus on 27 September 2026 and read the raw bytes with no JavaScript executed. 1,071 home pages were both allowed and readable, and they carried 20,664 list elements holding 104,474 list items. 80,761 of those items, 77.30 percent, sat inside a nav, header, footer or aside element, or inside an element declaring a navigation, banner or contentinfo role. 428 of the 1,071 pages carried no list anywhere else.
This run counted it. Lantad asked all 1,419 hostnames in the two committed corpus seed files for /robots.txt, evaluated the site root for its own crawler token before requesting anything else, then requested the home page of every host that allowed it and parsed the bytes that came back with no JavaScript executed. 1,071 answered HTTP 200 with an HTML content type and a body to read. Between them they carried 20,664 list elements and 104,474 list items, a median of 52 items per page, which is more list markup than most pages have paragraphs. The finding is not that these pages need more lists. It is where the ones they have are sitting, and what a machine reading the delivered bytes can do about it.
In short
- How to format content for AI search is usually answered with advice to add bullet lists, and on the 1,071 corpus home pages Lantad read on 27 September 2026 the bullet list was already the most common structural element on the page: 20,664 list elements holding 104,474 items, a median of 52 items per page.
- 80,761 of those 104,474 items, 77.30 percent, sat inside a nav, header, footer or aside element or inside an element declaring a navigation, banner or contentinfo role, so more than three quarters of the list markup on these pages is site furniture rather than anything a reader came for.
- 428 of the 1,071 pages carried no list outside that furniture at all, and 230 of the 428 did carry lists, every one of which was navigation. A further 198 pages carried no list element of any kind, 66 of them while serving 500 words or more of prose.
- Of the 5,247 lists that did sit outside the navigation regions, 1,981 had every item wholly enclosed in a link and nothing else, which is a menu that happens to sit outside a nav element. Those 1,981 lists hold 11,186 of the 23,713 items counted outside navigation.
- The declaration that would separate the two is mostly absent. 338 of the 1,071 pages declared no main element and no role of main, 27 declared more than one main which the HTML Standard forbids, and 17 of the 1,068 pages re-read the same day declared a schema.org ItemList in JSON-LD, 59 nodes covering 541 declared items.
| Stage | Hostnames | What it excludes |
|---|---|---|
| Corpus seed files | 1,419 | Nothing. Two committed sampling frames. |
| Returned a robots.txt status | 1,374 | 45 where the request never produced a status |
| Allowed LantadBot at the root | 1,324 | 12 by an explicit rule, 38 by a 5xx treated as disallow |
| Home page answered 200 with HTML | 1,071 | 214 that answered 403, 35 other non-200, 3 unusable, 1 timeout |
| Carried at least one list element | 873 | 198 pages carrying no ul, ol or dl at all |
| Carried a list outside the navigation regions | 643 | 428 where every list, if any, was navigation |
What the standard says a list element means
Three elements carry a list in HTML and they are not interchangeable. The HTML Standard, a Living Standard that carried the date 25 September 2026 when it was read on 27 September 2026 at html.spec.whatwg.org/multipage/grouping-content.html, defines the ul element as representing "a list of items, where the order of the items is not important", and the ol element as representing "a list of items, where the items have been intentionally ordered, such that changing the order would change the meaning of the document". The dl element it defines separately, as "an association list consisting of zero or more name-value groups (a description list)". The li element gets one sentence: it "represents a list item".
Those definitions matter here because only one of the three is in real use. Of the 20,664 list elements counted, 20,150 were ul, 300 were ol and 214 were dl. At page level the gap is starker: 867 of the 1,071 pages used at least one ul, 97 used any ol and 39 used any dl. The element whose whole purpose is to say that sequence carries meaning appears on fewer than one page in ten, and the one that says order is irrelevant is on four pages in five. That is a reasonable distribution for a home page, which is mostly not a procedure, but it is worth holding next to the advice to format for extraction: a numbered list is the only list markup that tells a machine the order is a claim, and almost nobody is sending one. The outlier is harvard.edu, whose home page carried 20 ordered lists against 2 unordered, the reverse of every other page measured.
Nesting is common and deep. 9,961 of the 20,664 lists sat inside another list, and the deepest chain ran to six levels on fiocruz.br. A list inside a list inside a list is the standard shape of a drop-down menu expressed in markup, which is the first hint about what most of this material is doing. The average list held 5.1 items, so these are not long enumerations of facts. They are short groups, repeated many times per page, which is again the shape of a menu rather than of an argument. None of this is a defect and none of it is a prose parity failure: the markup is valid, it renders, and a screen reader reads it correctly. It is also not what this scanner currently scores, and the methodology page is the place that says so: no sub-score reads a list element at all, so every figure below is a census rather than a grade. It is simply not the thing the formatting advice imagines it is.
| Element | What the standard says it represents | Elements counted | Pages using it |
|---|---|---|---|
| ul | A list of items where the order is not important | 20,150 | 867 |
| ol | Items intentionally ordered, so changing the order changes the meaning | 300 | 97 |
| dl | An association list of zero or more name-value groups | 214 | 39 |
| li | A list item | 104,474 | 873 |
Where the list markup actually sits
Every list was classified once, by its ancestors and nothing else. A list counts as navigation here when it sits inside a nav, header, footer or aside element, or inside any element whose role attribute declares navigation, banner or contentinfo. Those are the regions the platform itself names as furniture: the WAI-ARIA 1.2 specification, a W3C Recommendation dated 6 June 2023, defines the navigation role as "A landmark that contains a collection of navigational elements" and the main role as "A landmark that contains the main content of the document". Nothing about the classification involves reading the words.
15,417 of the 20,664 lists were navigation by that rule, and 80,761 of the 104,474 items. 77.30 percent of every list item on these pages is furniture. The word counts run the same way and harder: 242,253 of the 375,898 words sitting inside list items were inside a navigation region, and a navigation item averaged 3.0 words against 5.6 for one outside. Taken across the whole body rather than just the lists, 404,797 of 1,255,759 words on these pages sat inside a nav, header, footer or aside, which is a rate this scanner has reported before on a much smaller sample: 1,395 of 2,729 text blocks were navigation on five captured pages, carrying under a fifth of the words. At 1,071 pages the shape survives.
The per-page distribution is the part the aggregate hides. 428 of the 1,071 pages carried no list at all outside the navigation regions, and 230 of those 428 did carry lists, every single one of which was navigation. acehardware.com is the clearest case: 178 list elements holding 1,840 items, 5,817 words on the page, and not one list outside the header, nav and footer. hdfcbank.com carried 470 lists and 1,491 items with 1,438 of the items in navigation. The median page carried exactly one list outside the furniture. Meanwhile 198 pages carried no list element of any kind, and 66 of those were serving 500 words or more of prose, which is the honest counterexample to the advice: a page can be readable, substantial and entirely list-free.
The one declaration that would separate the two
HTML has an element for this and it is not new. MDN's reference for the main element, last modified 10 September 2026, states that it "represents the dominant content of the body of a document" and that its content "should be unique to the document", adding that content repeated across a set of documents "such as sidebars, navigation links, copyright information, site logos, and search forms shouldn't be included unless the search form is the main function of the page". The HTML Standard puts the same idea in one line, that the main element represents the dominant contents of the document, and adds a hard constraint: "A document must not have more than one main element that does not have the hidden attribute specified".
338 of the 1,071 pages declared neither a main element nor a role of main. On those pages nothing in the delivered markup says which region is the content, so a reader has to guess from position, density or heuristics, and this scanner has already measured what that guess is worth: deleting the main element from five captured pages cut the extracted corpus from 13,615 words to 11,950, and on one of the five the landmark was worth 43 percent of the text. canadiantire.ca served 11,278 words with no main element and six lists. hdfcbank.com served 6,358 words, 470 lists and no main element. 27 further pages declared more than one main landmark, counting main elements and a role of main together. The standard's constraint applies to main elements without the hidden attribute and this run did not read that attribute, so the 27 is a count of declared landmarks rather than of confirmed violations; on hookagency.com the ten were ten main elements, and a document with ten dominant regions has told a machine nothing it can use. It is the same class of defect as a head carrying two descriptions, which is where 43 of 1,083 home pages ended up: the field exists, it is populated twice, and the duplication destroys the signal the field was for.
The split runs along tooling rather than along care, the same pattern found when 412 of 1,080 home pages named their site in neither source Google reads first. 35 of the 42 readable Bubble pages declared no main, and 27 of 42 Webflow pages, against 1 of 54 on Wix and Squarespace and 1 of 34 Shopify storefronts. A hosted theme emits the landmark and a page built block by block does not, which means the declaration is a property of the generator more than of the publisher. 108 of the 338 pages with no main also carried no words inside a nav, header, footer or aside, so on those pages neither half of the distinction is declared: there is no stated content region and no stated furniture, just a div tree. Whether any AI crawler weights the landmark is not something this run can answer, and no crawler vendor publishes that it does.
-
One main element or role706 pages A single declared content region, which is what the HTML Standard allows and what an extractor can rely on. -
More than one main landmark27 pages Counting main elements and a role of main together. The hidden attribute was not read, so this counts declarations, not confirmed violations. hookagency.com carried ten main elements. -
No main and no role of main338 pages Nothing states which region is content. Includes canadiantire.ca at 11,278 words and hdfcbank.com at 470 lists. -
Neither main nor any furniture region108 pages No main, and no words inside a nav, header, footer or aside either, so neither half of the distinction is declared.
How to format content for AI search, if the markup is already there
The practical answer these figures support is narrower than the usual advice and it is not about adding bullets. Declare which region is the content, because 338 pages here do not and the one element that does it costs nothing. Use ol when the order is a claim, because 97 pages in 1,071 do and it is the only list markup that carries that meaning. And if a list is genuinely a set of facts rather than a set of links, say so as data rather than only as formatting, because there is a vocabulary for exactly that and almost nobody is using it.
schema.org's ItemList type is blunt about the distinction in its own description: a list of items of any sort, "Not to be confused with HTML lists, which are often used only for formatting". The entry reports a usage band of 1 million to 10 million domains, attributed to monthly aggregations from Google web index data for August 2026. On this corpus the rate is far below that. Re-reading the same 1,071 home pages the same day, 1,068 answered again and 613 carried at least one parseable JSON-LD block, a denominator consistent with the 615 found the previous day when 313 of 615 pages gave no schema node an @id. 17 of the 1,068 declared an ItemList. Between them they held 59 nodes covering 541 declared items, against 104,474 list items in HTML on the same pages. All 59 nodes carried itemListElement, 47 carried numberOfItems and 5 carried itemListOrder, so the ones that exist are well formed; there are just seventeen of them. 265 pages carried five or more lists outside their navigation regions and declared no ItemList at all.
Two of the seventeen are worth naming because they run in opposite directions. theglobeandmail.com declared 39 ItemList nodes covering 68 items, which is a news front page describing its own sections as data. france24.com declared a single ItemList of 102 items on a page where every HTML list sat inside a navigation region, so the structure a machine can read as content exists only in the JSON-LD. That is the inverse of the default case, and it is the only arrangement measured here where the declared structure and the visual structure disagree in the publisher's favour. It is worth saying plainly that no citation, ranking or retrieval outcome was measured in any of this, so nothing here shows that an ItemList earns anything, and the honest state of the evidence on structured data generally is thinner than the advice around it. What the figures support is a statement about what is declared, not about what it buys.
None of this replaces the earlier work in this series, and it sits next to it rather than above it. 311 of 704 article pages ran over 300 words with no heading, 84 of 1,091 home pages offered a crawler no internal path at all, 18,171 of 52,077 images carried an empty alt attribute, and on 11 of 271 pages JavaScript supplied all of the prose. Formatting is the last of those problems to matter, because a page whose text never arrives cannot be badly formatted, and the ordering is the whole reason AI visibility is measured access first and presentation last. The reason it is worth a measurement anyway is that formatting is the part of generative engine optimization and answer engine optimization most often sold as a checklist item, and on these pages the checklist item was already ticked 104,474 times over.
| What was counted | Figure | Denominator |
|---|---|---|
| HTML list elements | 20,664 | 1,071 pages read |
| HTML list items | 104,474 | 1,071 pages read |
| Pages carrying parseable JSON-LD | 613 | 1,068 pages re-read |
| Pages declaring an ItemList | 17 | 1,068 pages re-read |
| ItemList nodes | 59 | on those 17 pages |
| Items declared inside them | 541 | against 104,474 in HTML |
Lantad
Published .
Ask how to format content for AI search and the answer comes back in the same shape almost everywhere: break the prose up, use bullet points, give the model something it can lift. The advice is cheap to give because it is cheap to follow, and it has the pleasant property of being roughly true about how extraction works. What it never says is how much list markup is already on the page, or what that markup is currently being used for.
Common questions
How should I format content for AI search?
On the evidence of this run, declare structure rather than add it. 338 of the 1,071 corpus home pages Lantad read on 27 September 2026 declared no main element and no role of main, so nothing in the markup said which region held the content, while the same pages already carried 104,474 list items of which 80,761 were navigation. Declaring the content region, using ol where the order is a claim, and declaring a real list of facts as a schema.org ItemList are the three changes these figures support. Whether any AI crawler rewards them was not measured here and no crawler vendor publishes that it does.
Do bullet points help a page get cited by an AI answer engine?
This measurement cannot say, and it is worth being clear that it cannot. No citation, ranking or retrieval outcome was measured on any of the 1,071 pages. What the run establishes is the state of the markup: bullet lists are already the most common structural element on these pages at 20,664 elements and 104,474 items, and 77.30 percent of the items are site navigation, so advice to add more of them is advice to add more of the page's most ambiguous markup.
How did you decide a list was navigation rather than content?
By its ancestors and nothing else. A list counted as navigation when it sat inside a nav, header, footer or aside element, or inside any element whose role attribute declared navigation, banner or contentinfo. No words were read to make that decision. The 5,247 lists that sat elsewhere were then tested a second way, and 1,981 of them held two or more items where every item contained link text and no other words, which is a menu whatever it sits inside.
What does this measurement not show?
It reads one page per hostname, so every figure describes home pages rather than sites, and a well formatted article three clicks in is invisible to it by construction. No JavaScript was executed, so a list written in during hydration counts as absent. Every request came from LantadBot from one network location on one date, so nothing here is evidence about what GPTBot, ClaudeBot or PerplexityBot receives. The corpus is an editorial sampling frame assembled for platform and industry coverage, not a random draw of the web, so every rate supports a statement about these 1,419 hostnames and nothing wider.
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.