BlogFindings
HowTo schema: 8 of 272 how-to pages declared it, and 109 carried their steps with no markup
Lantad read all 1,419 hostnames in this repository's committed corpus on 11 October 2026, took every same-host link whose URL path or anchor text explicitly said it was instructional, and fetched the 288 pages that produced. 8 of the 272 that answered with HTML declared a HowTo or Recipe node. 115 of the 272 laid their steps out as an ordered list or a numbered heading, and 109 of those 115 declared no HowTo node at all. Google deleted its HowTo documentation on 14 September 2023 and now states that no special structured data is needed for its AI features.
In practice the type has been quietly abandoned at both ends. Google stopped showing the rich result and then deleted the documentation. This run went to see what site owners did in response, by going out to the live web and counting. The answer is that they stopped declaring it, or never started: 8 of 272 instructional pages carried a HowTo or Recipe node. The steps did not go anywhere, though. They are sitting in ordered lists and numbered headings on 115 of those same pages, which is where an AI crawler that reads text was always going to find them.
In short
- HowTo schema has almost no deployment left on the pages that would use it: 8 of the 272 instructional pages Lantad read on 11 October 2026 declared a HowTo or Recipe node, across 5 of the 149 hosts, and not one declared it in microdata or RDFa.
- The steps themselves are not missing. 115 of the same 272 pages carried an ordered list of three or more items or a numbered step heading, 1,199 list items and 237 headings in total, and 109 of those 115 pages declared no HowTo node.
- Google removed the How-to structured data documentation on 14 September 2023, recording in its own documentation updates log that the rich result is no longer shown on desktop or mobile, and its AI features page last updated 2025-12-10 UTC states there is no special schema.org structured data needed to appear in AI Overviews or AI Mode.
- Access is the larger problem on this page type than markup is: 35 of the 288 instructional pages, on 19 hosts, are disallowed to GPTBot by their own robots.txt, 31 of them by a group that names gptbot and 33 by a bare Disallow of the site root.
- Where HowTo was declared, half of the declarations went beyond the bare steps. The six HowTo nodes carried 57 leaf steps between them and 5 of the 6 carried a name, while 3 declared a totalTime and the same 3 listed both tools and supplies, 2 of them adding an estimatedCost, one of which read $6.00.
What is HowTo schema, and does anything still read it?
HowTo is a schema.org type for a set of instructions. schema.org still defines it, at release 30.1 dated 2026-09-16, as a subtype of CreativeWork, with eight properties of its own: step, totalTime, prepTime, performTime, tool, supply, estimatedCost and yield. The step property accepts a CreativeWork, a HowToSection, a HowToStep or plain text, so a page can declare a flat run of steps or group them into named sections. Recipe sits directly underneath it in the hierarchy, as Thing then CreativeWork then HowTo then Recipe, which matters for counting: a recipe is a how-to by inheritance, and it carries its steps in recipeInstructions rather than in step.
The vocabulary is not the part that changed. Google's consumption of it is. Google announced on 8 August 2023 that it was limiting How-to rich results to desktop, and added an update on 14 September 2023 saying that as of 13 September Google Search no longer showed How-to rich results on desktop either, "which means this result type is now deprecated". The same post said support would be dropped from the Rich Results Test in 30 days and from the Search Console API in 180.
Then the documentation went. Google's own documentation updates log records, under 14 September of that year, that it "Removed the How-to structured data documentation, as this rich result is no longer shown in search results, on both desktop and mobile devices", and separately that it removed the How-to rich result case study. The old documentation URL now redirects to that log entry. This is the second time we have found a type outliving its vendor documentation: the same thing happened to FAQPage. FAQPage took far longer to get there. The same August 2023 post narrowed it to well-known, authoritative government and health websites, and the updates log then records a separate removal of the FAQ rich result documentation, because the feature is no longer shown in Google Search results as announced in a changelog entry of May 2026. HowTo went from narrowed to deprecated to undocumented in the 37 days between 8 August and 14 September 2023.
So the honest statement of what reads HowTo today is short. Google does not render a rich result from it. Nothing in the vocabulary has been withdrawn. An answer engine that parses JSON-LD will see the node if it is there, and no vendor publishes a commitment to use it. That is a thinner case than the type had in 2022, and it is worth knowing before anybody spends a sprint adding it. Deployment across this vocabulary is concentrated in very few types at the best of times: only 16 schema.org types reach 10 million domains, and that count was taken from the schema.org usage file rather than from anything measured here.
| Date Google gives | What Google recorded | Status of the markup |
|---|---|---|
| 8 August 2023 | How-to rich results limited to desktop, FAQ rich results reduced to well-known government and health sites | still shown, desktop only |
| 13 September 2023 | Google Search no longer shows How-to rich results on desktop | deprecated |
| 14 September 2023 | How-to structured data documentation removed, How-to rich result case study removed | undocumented |
| Within 30 days of 14 September 2023 | How-to search appearance, rich result report and Rich Results Test support dropped | untestable at Google |
| Within 180 days of 14 September 2023 | How-to support removed from the Search Console API | unreportable |
| Page last updated 2025-12-10 UTC | AI features page: no special schema.org structured data is needed for AI Overviews or AI Mode | not required |
8 of 272 instructional pages declared HowTo schema
The method, because the denominator is doing the work. Every one of the 1,419 hostnames in this repository's committed corpus received one request for robots.txt and one for its home page, sent as LantadBot with redirects followed and no JavaScript executed, which is the request shape described on our bot page. 1,088 home pages answered HTTP 200 with HTML.
From those 1,088 the run took every link pointing at the same host where either the URL path contained one of how-to, howto, how_to, how-do-i, step-by-step, tutorial or instructions, or the anchor text began with "how to", "how do i" or "how can i", or contained "step by step" or "tutorial". That is a deliberately narrow test and it is the reason the sample is a sample rather than a guess: a page the site itself labels instructional, in the URL or in the words it links with. It produced 288 distinct pages on 158 hosts, 226 of them matched on the path and 62 on the anchor text alone.
5 of the 288 were disallowed to LantadBot by their own robots.txt and were not requested, which is the policy set out in our methodology. Of the 283 requested, 274 answered 200, and 272 of those were HTML and were read. The other two were PDFs, from iisc.ac.in and icmr.gov.in. Six answered 403, four of them forbes.com. Two answered 404 and one connection failed outright.
Across those 272 pages, on 149 hosts, 8 declared a HowTo or a Recipe node. Six declared HowTo itself, on five hosts: wix.com, lemonade.com, n26.com, unabyss.com and growforagecookferment.com, which carried two. The remaining two were Recipe nodes, both on growforagecookferment.com. Not one page in the set declared HowTo in microdata or in RDFa, so the figure is not an artefact of looking only at JSON-LD.
Context for how small 8 is: 142 of the 272 pages carried parseable JSON-LD at all, so the markup habit is there. 128 carried no ld+json block whatsoever. Among the types that were declared, BreadcrumbList appeared on 70 pages, WebPage on 62, Article on 41 and FAQPage on 17. A page that will describe itself as an Article but not as a HowTo is not short of a markup pipeline. It has made a choice, or inherited one from a theme. It is the same shape we found for Event schema, declared by 19 of 1,419 sites, and when zero of 88 community pages declared discussion forum markup, though the denominators differ and the three rates are not comparable to each other. The pattern across all three is that the types with no live rich result do not get deployed, whatever generative engine optimization advice says about feeding machines structure.
-
200 with HTML272 pages read and analysed, across 149 hosts -
Refused by robots.txt5 pages disallowed to LantadBot, so never requested -
200 with a PDF2 pages iisc.ac.in and icmr.gov.in served application/pdf -
403 Forbidden6 pages four on forbes.com, plus aucegypt.edu and petermac.org -
404 Not Found2 pages both linked from the bettersheets.co home page -
Transport failure1 page americanexpress.com, the request failed outright
The steps were on the page, and 109 times nothing marked them
The interesting half of this measurement is not the 8. It is that the content the markup would have described is present and readable on 115 of them, fourteen times as many pages as declared the type.
115 of the 272 pages, on 61 hosts, carried visible step structure, counted as either an ordered list holding three or more items or a heading whose text begins with a step number: "Step 3", "4." or "2 -". Across those 115 pages there were 1,199 ordered list items and 237 numbered step headings. 109 of the 115 declared no HowTo node. All six of the HowTo pages also carried visible step structure, so every page in this set that declared a sequence also showed one, though this run did not compare the declared step text against the visible text.
The scale of some of them is worth stating. irs.gov serves the Form 1040 instructions as a single document of 105,754 words with 130 ordered list items and 14 numbered headings in it, and declares no JSON-LD at all. navyfederal.org has 138 ordered list items on one tutorials page and declares nothing. natwest.com accounts for four of the fourteen heaviest pages in the set, with 52, 28, 23 and 23 ordered list items, and declares no JSON-LD on any of the four. These are not neglected pages. They are the pages a bank and a tax authority put real editorial effort into, laid out as steps, with no type attached.
That is a better position than it sounds, and the reason is what the engines actually consume. An ordered list is text in the document. A numbered heading is text in the document. Both arrive in the HTML without JavaScript and both survive extraction, which is the thing we keep measuring and keep finding to be the binding constraint: we have published that 80,761 of 104,474 list items on corpus home pages were navigation rather than content, that 311 of 704 article pages ran over 300 words with no heading at all, and that 379 of 1,066 home pages declared no main landmark. Against that background, 115 pages that number their steps in the markup are doing the part that transfers.
52 of the 128 pages carrying no JSON-LD block at all still had visible step structure. The median page in the whole set ran 1,122 words. So the typical instructional page in this corpus is a thousand words of prose with its sequence marked up as a list and its type left undeclared.
| Host | Stratum | List items | Step headings | JSON-LD types |
|---|---|---|---|---|
| irs.gov | government | 130 | 14 | none |
| navyfederal.org | finance | 138 | 0 | none |
| natwest.com | finance | 52 | 0 | none |
| growforagecookferment.com | media-local | 46 | 0 | 13, no HowTo |
| aiven.io | saas | 37 | 0 | none |
| ntu.edu.sg | education | 31 | 0 | none |
| usps.com | government | 29 | 7 | 4, no HowTo |
| natwest.com | finance | 28 | 13 | none |
| usps.com | government | 28 | 5 | 4, no HowTo |
| sendbird.com | saas | 20 | 6 | 5, no HowTo |
What the eight declarations actually carried
A count of declarations says nothing about whether they were any good, and the usual finding on this blog is that a declared type is half filled. That is not what happened here. The eight nodes were mostly careful, though five hosts is far too few to call that a pattern rather than a property of these five.
The six HowTo nodes carried 57 leaf steps between them. wix.com declared ten HowToStep entries on a page about building a website, each with text and a URL pointing at a fragment on the same page. lemonade.com declared seven named steps for getting renters insurance, plus a totalTime of PT60M, four HowToTool entries and four HowToSupply entries. unabyss.com declared three steps with explicit position values. growforagecookferment.com used the harder form twice, grouping its steps into two HowToSection nodes with their real steps inside as itemListElement, eight leaf steps on one page and nine on the other, and added estimatedCost, yield, tool and supply on both. One of those carried an estimatedCost of $6.00 and a yield of 12 ounces.
The two Recipe nodes on that same host declared their steps in recipeInstructions instead, 8 entries on one and 13 on the other, which is correct for Recipe and is why a naive count of the step property reports zero for them. Anybody auditing this type needs to read both properties or they will under-report their own site.
One node was defective in a way worth naming because it is easy to make. n26.com declared a HowTo with 20 HowToStep entries and no name property. It carried headline instead, which HowTo inherits from CreativeWork and which is not the property a consumer looks for when it wants the title of the instructions. The step text also carries its own numbering inside the string, as "1. Learn to budget and understand your finances", so a consumer that renders the steps as a list produces a doubly numbered list. Neither is fatal. Both are the sort of thing a markup value that is not on the page turns into when nobody is checking, and we have found the same class of error in ItemList nodes where 525 of 766 items carried no name and in FAQ answers where 298 of 1,277 were not on the page.
Eight pages is too small a sample to generalise from and this section is description, not a finding. What it does establish is that the low count is not a quality story. The type is not being declared badly. It is not being declared.
| Host | Type | Leaf steps | Named | Extra properties declared |
|---|---|---|---|---|
| wix.com | HowTo | 10 | yes | image |
| lemonade.com | HowTo | 7 | yes | totalTime, 4 tools, 4 supplies |
| n26.com | HowTo | 20 | no | headline instead of name |
| unabyss.com | HowTo | 3 | yes | step positions, publisher |
| growforagecookferment.com | HowTo | 8 | yes | 2 sections, totalTime, cost, yield, tools |
| growforagecookferment.com | HowTo | 9 | yes | 2 sections, totalTime, cost, yield, tools |
| growforagecookferment.com | Recipe | 8 | yes | recipeInstructions, totalTime, prepTime |
| growforagecookferment.com | Recipe | 13 | yes | recipeInstructions, totalTime, prepTime |
35 of the instructional pages were closed to GPTBot
While the markup question was being counted, a larger one answered itself. 35 of the 288 instructional pages, on 19 hosts, are disallowed to GPTBot by the site's own robots.txt, evaluated with the parser and matcher the scanner ships in core/src/robots.ts rather than one written for this run.
The deciding group named gptbot on 31 of the 35 and was the wildcard group on the other 4. 33 of the 35 were closed by a bare Disallow of the site root, which is a deliberate, whole-site refusal rather than a rule that caught these pages by accident. That makes this a different finding from the one where 559 of the 581 pages GPTBot lost were closed by a rule that never named it: on this page type the blocking is intentional and specific.
The distribution says who is doing it. 15 of the 35 are news hosts, 7 ecommerce, 3 healthcare, 3 software-as-a-service, 3 finance, 2 education and 1 government. By host: zalando.de closes six pages that explain how to redeem a gift card and how to pay by Klarna, by invoice, by credit card, by Apple Pay and by SEPA direct debit. forbes.com closes four, sendbird.com three, and nature.com, healthline.com, webmd.com, cnbc.com, abc.net.au, nzherald.co.nz and ally.com between one and two each. These are explanations of how to do a thing, held behind a crawler refusal, on exactly the subjects people ask an assistant about.
Whether that is a mistake is not for a scanner to say. A publisher refusing an AI crawler is making a licensing decision, and a root-level refusal naming gptbot is what a decision looks like in a file. What is worth separating is the two cases that look identical from outside: a site that decided to refuse, and a site that is refusing without knowing. Anybody can check their own answer in a minute with our robots.txt tester or by looking at what GPTBot sees on a given URL.
The reason this outranks the markup question in importance is the order of operations. Google's AI features documentation, last updated 2025-12-10 UTC, puts "ensuring that crawling is allowed in robots.txt, and by any CDN or hosting infrastructure" first in its list of SEO practices that still matter, and says a page must be indexed and eligible to be shown with a snippet before it can appear as a supporting link in AI Overviews or AI Mode. A HowTo node on a page a crawler cannot fetch is worth nothing at all.
What to do with a how-to page, in the order that pays
The temptation on a finding like this is to tell everybody to go and add HowTo markup, and the evidence does not support it. Google's own AI features page, the one quoted above, says in its own words that you do not need to create new machine readable files, AI text files or markup to appear in those features, and that there is no special schema.org structured data you need to add. We ship a scanner that grades schema, and we are telling you that Google's own documentation says this particular type is not a requirement. We have published the same shape of inconvenient result before: in a 1,100 URL audit, structured data came third behind things that mattered more.
So the order that pays, measured by what this run actually found, runs in the opposite direction from the markup advice. First, be reachable by the crawler you care about: 35 of the 288 instructional pages are closed to GPTBot, and for that crawler the cost is total. Second, put the steps in the text, as an ordered list or numbered headings, which 115 pages already do and 157 do not. Third, make sure the prose and any markup agree, which is the one structured data instruction Google's AI features page does give: make sure your structured data matches the visible text on the page. Fourth, and only fourth, consider declaring the type, knowing that no vendor currently publishes a commitment to use it and that growforagecookferment.com and lemonade.com were the only hosts in this corpus that filled in its time, tool and supply properties.
What this run did not measure matters as much as what it did. It did not test whether any engine answers differently with or without a HowTo node, and nothing here should be read as saying the markup helps or does not help. It did not render JavaScript, so a page that injects its steps or its JSON-LD after load counted as having neither; we have measured that effect separately and found it small but real, at 27 of 404 home pages gaining structured data when a browser ran the page. It sampled one page type by the names sites give their own links, which will miss an instructional page labelled something else, and it took at most the links present on a home page, so a how-to section buried three clicks deep is absent. 272 pages on 149 hosts is a sample, not a census, and the eight declarations are too few to support any claim about who declares HowTo and why.
The finding that survives all of those caveats is the simple one. On this page type the markup is gone and the content is fine. The machines that need the steps can read them, as long as they are allowed to ask.
Flow: robots.txt allows the crawler (disallow) to Nothing else matters; robots.txt allows the crawler (allow) to Page fetched without JavaScript; Page fetched without JavaScript to Steps present as text; Steps present as text (no) to Sequence not extractable; Steps present as text (yes) to Ordered list or numbered headings; Ordered list or numbered headings to HowTo node, optional; HowTo node, optional (declared) to Markup matches visible text; HowTo node, optional (declared badly) to Markup contradicts the page.
Lantad
Published .
A how-to page is the shape of content an assistant is asked for constantly. Somebody wants to know how to apply for a visa, file a return, brew cider or set up a bank transfer, and the answer is a sequence of steps that exists on somebody's website. Structured data has a type for exactly that, HowTo, with properties for the steps, the tools, the supplies, the cost and the time. On paper it is the cleanest possible match between a page and a machine that has to summarise it.
Common questions
Is HowTo schema still worth adding in 2026?
On the evidence in this run, it is the fourth thing to do rather than the first. Google deprecated the How-to rich result on 13 September 2023 and removed the documentation for it the following day, and Google's AI features page, last updated 2025-12-10 UTC, states that there is no special schema.org structured data you need to add to appear in AI Overviews or AI Mode. No vendor publishes a commitment to read the type. 8 of the 272 instructional pages we read on 11 October 2026 declared it. Nothing in this run tested whether declaring it changes any engine's answer, so this is a statement about deployment and documentation, not about effect.
Does removing HowTo markup from a page hurt anything?
Google addressed the equivalent question for FAQ markup in its August 2023 post, saying that while you can drop the structured data there is no need to proactively remove it, because structured data that is not being used does not cause problems for Search but also has no visible effect. The same reasoning applies to a HowTo node: it is inert rather than harmful. The one case where removal is worth the effort is a node that contradicts the page, because mismatched markup is the one structured data problem Google's AI features page does name.
How did you decide which pages counted as how-to pages?
By the labels the sites gave their own links. From the 1,088 corpus home pages that answered with HTML, we took every same-host link whose URL path contained how-to, howto, how_to, how-do-i, step-by-step, tutorial or instructions, or whose anchor text began with how to, how do i or how can i, or contained step by step or tutorial. That produced 288 pages on 158 hosts, 226 matched on the path and 62 on the anchor text alone. The test is narrow on purpose and it will miss instructional pages named something else, so read 272 as a sample of self-labelled how-to pages rather than as all of them.
Why does a recipe count as a how-to page?
Because schema.org makes it one. The hierarchy on the Recipe page at release 30.1 reads Thing, CreativeWork, HowTo, Recipe, so every Recipe is a HowTo by inheritance. The practical consequence is a counting trap: Recipe carries its steps in recipeInstructions rather than in the step property HowTo defines, so an audit that reads only step will report a fully marked up recipe as having no steps. Two of the eight nodes in this run were Recipes, with 8 and 13 recipeInstructions entries, and both would have been scored as empty by a naive check.
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.