HowTo schema produces step-by-step rich results with time estimates and images — but Google only shows it for genuinely procedural content. Here's when it works and when it doesn't.

estimatedCost, totalTime, and supply properties wherever applicable — these are what differentiate a minimal HowTo display from a rich, expanded result.HowTo schema is one of the most powerful structured data types for procedural content — and one of the most frequently misapplied. Sites add it to listicles, tip articles, and overview guides, then wonder why Google never shows the step-by-step rich result. Other sites implement it correctly but leave out the properties that make the rich result visually rich enough to stand out against competitors.
This guide explains exactly what HowTo schema does, when Google chooses to display it, what a correct implementation looks like, and why AI citation makes it worth getting right even when Google doesn't show the visual rich result.
HowTo is a schema.org type that marks up a page as step-by-step instructions for completing a task. When Google validates and chooses to display the markup, it renders an expanded rich result in the SERP that includes:
"name" property)totalTime)estimatedCost)supply)On desktop, a full HowTo rich result can occupy significantly more vertical space than a standard blue link. On mobile, Google has sharply curtailed HowTo display — most mobile searches see at most a compressed step count, not the full expanded view.
The structured data also serves a second purpose that has become more valuable than the visual SERP enhancement: it makes your instructions machine-readable for AI assistants. When ChatGPT, Perplexity, or Google AI Overview encounters a page with valid HowTo schema, it can extract each step as a discrete instruction and present them in a cited, step-by-step format in its answer — without needing to parse prose.
Google is selective about displaying HowTo rich results. Understanding the conditions helps you target the markup where it will actually produce results.
Query intent must match "how to do X"
HowTo rich results appear for queries with explicit procedural intent — queries where the user wants instructions for completing a task. These queries typically start with "how to" or are phrased as a task: "change DNS record", "add HowTo schema Next.js", "check robots.txt AI crawlers".
Informational queries ("what is HowTo schema", "why does schema markup matter"), comparison queries, and opinion queries do not trigger HowTo rich results regardless of markup.
Content must be genuinely procedural
Google's quality evaluation distinguishes between true how-to content (sequential numbered steps that must be completed in a specific order) and informational content structured as a list. If your "steps" are actually tips, considerations, or parallel points — rather than sequential instructions — Google will not display the HowTo rich result even if your JSON-LD is technically valid.
The test: could a user follow your numbered steps in sequence to complete a specific task? If yes, HowTo schema is appropriate. If the steps can be followed in any order, or are better described as "things to know" rather than "things to do", they are not HowTo content.
Desktop over mobile
Google significantly reduced HowTo mobile rich result display. For most queries, desktop users see the expanded step-by-step result while mobile users see a standard listing. This doesn't make the schema less valuable — the AI citation benefits apply regardless of device — but it does mean your primary HowTo rich result audience is desktop search.
When Google ignores HowTo markup
Google ignores HowTo schema in these specific cases:
HowToStep text content is too thin — single sentences per step rarely generate full rich resultsThe following is a complete, correct HowTo schema implementation. The example covers a task directly relevant to AI search readiness: checking whether your robots.txt allows AI crawlers.
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Check if Your robots.txt Allows AI Crawlers",
"description": "Verify that GPTBot, ClaudeBot, and PerplexityBot can access your site.",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "0"
},
"totalTime": "PT5M",
"supply": [
{
"@type": "HowToSupply",
"name": "A browser"
}
],
"step": [
{
"@type": "HowToStep",
"name": "Open your robots.txt file",
"text": "Navigate to yourdomain.com/robots.txt in your browser. This file is publicly accessible on every properly configured web server.",
"url": "https://seo.yatna.ai/seo-academy/robots-txt-guide-ai-crawlers-2026/"
},
{
"@type": "HowToStep",
"name": "Check for AI crawler rules",
"text": "Look for User-agent entries for GPTBot, ClaudeBot, ChatGPT-User, and PerplexityBot. If you see 'Disallow: /' under any of these user-agents, that crawler is blocked."
},
{
"@type": "HowToStep",
"name": "Check the wildcard rule",
"text": "Find the 'User-agent: *' section. If it contains 'Disallow: /' and there are no overriding Allow rules for AI crawlers, all bots including AI crawlers are blocked."
},
{
"@type": "HowToStep",
"name": "Add explicit Allow rules if needed",
"text": "If AI crawlers are blocked, add explicit User-agent blocks with 'Allow: /' for each AI crawler: GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, and anthropic-ai."
},
{
"@type": "HowToStep",
"name": "Validate with an SEO audit tool",
"text": "Run a free AI readiness audit at seo.yatna.ai to automatically check your robots.txt configuration for all major AI crawlers and identify any blocking issues.",
"url": "https://seo.yatna.ai/"
}
]
}
Key decisions in this example:
"totalTime" uses ISO 8601 duration format — PT5M is 5 minutes, PT1H30M is 1 hour 30 minutes"estimatedCost" with a value of "0" is explicitly provided — this is a positive signal that appears in the rich resultHowToStep has both "name" (the step heading) and "text" (the step instructions) — using only "text" produces a valid but less rich result"url" on a step links to additional context — not required but useful for cross-linking related contentMany HowTo implementations include only "name" and "step" and wonder why the rich result is minimal. These properties significantly improve the displayed result:
totalTime
The estimated completion time appears prominently in the rich result display, immediately below the procedure name. It's one of the first things a user sees and is a significant click-through signal for procedural queries — users want to know how long something takes before committing. Use ISO 8601 duration format: PT10M (10 minutes), PT1H (1 hour), PT2H30M (2.5 hours).
estimatedCost
For procedures with material or software costs, this property surfaces the cost estimate directly in the SERP. Even for free procedures, setting "value": "0" communicates "free" to users scanning results — a conversion-positive signal that many implementations omit.
supply and tool
HowToSupply items are materials consumed in the process (ingredients, consumables). HowToTool items are tools used but not consumed. Both appear in the rich result's "What you'll need" section. For technical procedures, listing software tools improves the rich result quality.
Step images
Each HowToStep can include an "image" property pointing to a screenshot or diagram. Step images are shown in the Google rich result as thumbnails. For visual procedures, this dramatically improves click-through rate.
{
"@type": "HowToStep",
"name": "Open Google Search Console",
"text": "Log in at search.google.com/search-console and select your property.",
"image": {
"@type": "ImageObject",
"url": "https://example.com/images/search-console-login.webp",
"width": 800,
"height": 450
}
}
HowTo JSON-LD must be injected as a <script> tag in the page component — not via generateMetadata, which only manages <head> meta tags and cannot produce <script> elements.
// app/seo-academy/howto-schema-guide/page.tsx
export default function HowToSchemaGuidePage() {
const howToSchema = {
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Add HowTo Schema in Next.js App Router",
"description": "Implement HowTo structured data in a Next.js 15 App Router page component.",
"totalTime": "PT10M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "0"
},
"step": [
{
"@type": "HowToStep",
"name": "Define the schema object",
"text": "Create a JavaScript object matching the HowTo schema structure in your page component file. Include name, description, totalTime, and a step array."
},
{
"@type": "HowToStep",
"name": "Inject via script tag",
"text": "Return a script element of type application/ld+json from your page component with the JSON-stringified schema object as its content."
},
{
"@type": "HowToStep",
"name": "Validate the output",
"text": "Test the rendered page at search.google.com/test/rich-results to confirm the HowTo type is detected with zero errors."
}
]
};
return (
<>
<script
type="application/ld+json"
// Schema is a server-side constant — never from user input
// nosec — not XSS risk for static server-side schema objects
dangerouslySetInnerHTML={{ __html: JSON.stringify(howToSchema) }}
/>
{/* page content */}
</>
);
}
For pages that generate HowTo schema dynamically — for example, a CMS-driven tutorial system — build the step array server-side before passing it to the script tag. Never build or mutate schema in a client component; Googlebot needs the schema in the initial server-rendered HTML.
If you use TypeScript, define a typed schema interface or use a library like schema-dts to validate your schema object structure at build time rather than discovering errors in production.
The AI citation benefit of HowTo schema deserves emphasis because it operates independently of whether Google displays the visual rich result.
When an AI assistant encounters a page with valid HowTo markup, it can process the procedure in structured form rather than inferring it from prose. This matters for two reasons:
Accuracy: prose-parsed procedures are prone to AI misinterpretation — the model may merge steps, omit conditions, or reorder instructions incorrectly. Structured HowToStep objects give the model clear step boundaries, explicit names, and discrete instruction text, producing more accurate extracted procedures.
Attribution: AI assistants are more likely to cite a source when they can attribute a specific structured output to it. A HowTo schema gives the AI a clear, citable procedure rather than a paraphrased extraction of paragraph content.
For procedural content targeting "how to" queries — and AI users frequently ask "how to" questions — HowTo schema is one of the highest-value GEO investments available. Your instructions can be surfaced by ChatGPT, Perplexity, and AI Overviews as cited, step-by-step procedures rather than unattributed paraphrases.
Error 1: Applying HowTo to non-procedural content
Listicles with titles like "5 Ways to Improve Your SEO" are not HowTo content. The items are parallel, not sequential. Google recognises the mismatch and suppresses the rich result.
Error 2: Steps that are too brief
Single-sentence steps rarely produce full rich results. Each step should have enough instructional content to stand alone as a meaningful instruction.
Error 3: Step name doesn't match the visible heading
The "name" of each HowToStep should match the visible step heading text on the page. Mismatches between schema and visible content are treated as inconsistency by Google's validator.
Error 4: Wrong totalTime format
A common mistake is writing "5 minutes" as a plain string instead of "PT5M" in ISO 8601 duration format. The plain string format is not valid and will be ignored.
Error 5: Using HowTo on commercial pages
Google explicitly does not display HowTo rich results on pages whose primary purpose is selling a product. A tutorial page that ends with a product CTA is fine; a product page with an appended tutorial is not.
After implementing your HowTo markup, test it before Googlebot visits:
name and textFor a broader schema audit that checks HowTo against the full set of implementation requirements — including step content quality, time format validation, and cross-page consistency — use the schema validator at seo.yatna.ai:
Validate your HowTo schema — free at seo.yatna.ai/tools/schema-validator
Can HowTo and FAQPage schema appear on the same page?
Yes — if a page is primarily a tutorial with HowTo steps, and also includes a genuine FAQ section, both schema types can be present on the same page. Apply HowTo to the procedure and FAQPage to the Q&A section. Do not nest one inside the other.
Does HowTo schema boost rankings directly?
No — structured data is not a direct ranking factor. HowTo schema affects how your result is displayed (rich result) and how AI assistants extract your content. Indirect ranking benefits come from improved click-through rate if the rich result is displayed, which signals relevance to Google.
What's the minimum number of steps for HowTo schema?
There is no documented hard minimum, but single-step procedures are almost never shown as HowTo rich results. Two steps is a technical minimum; three or more steps is the practical requirement for reliable rich result display.
Should I use HowTo schema on every tutorial on my site?
Only on content that is genuinely procedural — sequential steps to complete a specific task. Informational guides, comparison articles, and opinion pieces should use Article or BlogPosting schema instead.
About the Author

Ishan Sharma
Head of SEO & AI Search Strategy
Ishan Sharma is Head of SEO & AI Search Strategy at seo.yatna.ai. With over 10 years of technical SEO experience across SaaS, e-commerce, and media brands, he specialises in schema markup, Core Web Vitals, and the emerging discipline of Generative Engine Optimisation (GEO). Ishan has audited over 2,000 websites and writes extensively about how structured data and AI readiness signals determine which sites get cited by ChatGPT, Perplexity, and Claude. He is a contributor to Search Engine Journal and speaks regularly at BrightonSEO.