# Your how-to content does the work but Google can&#39;t read the steps

HowTo schema markup turns step-by-step content into rich results with expandable steps. Most implementations miss required fields or break nesting rules.

Author: J.A. Watte
Published: April 30, 2026
Source: https://jwatte.com/blog/blog-tool-how-to-schema/

---

You write a detailed guide with numbered steps, screenshots, and time estimates. Google shows it as a plain blue link. Your competitor writes a thinner version, adds HowTo schema markup, and gets the expandable steps rich result that takes up three times the vertical space in search results. The content quality isn't the differentiator. The markup is.

HowTo is one of the most underused schema types for content-heavy sites. It applies to any page that walks a reader through a process: recipes (though Recipe has its own type), DIY repairs, software tutorials, tax filing instructions, gardening guides. If your content says "Step 1, Step 2, Step 3," it's a candidate for HowTo markup.

## What Google requires vs. what most people ship

Google's documentation for HowTo structured data specifies required and recommended properties. The required properties are straightforward: `name` (what you're teaching), and at least one `HowToStep` with `text` describing the action. But the recommended properties are where most implementations fall short, and "recommended" in Google's structured data documentation means "you won't get the rich result without them."

Each `HowToStep` should include a `name` (short summary of the step), `text` (detailed instructions), `url` (anchor link to the step on the page), and `image` (visual for that step). The overall HowTo should include `totalTime` in ISO 8601 duration format, `estimatedCost`, and `supply` and `tool` lists where applicable.

The most common mistakes:

**Empty step names.** People include `text` but leave `name` blank. Google uses `name` for the collapsed view in rich results. Without it, the step either shows truncated text or gets skipped.

**Missing step URLs.** Each step should point to an anchor on the page so Google can deep-link to it. Without `url`, you lose the "jump to step" functionality that makes HowTo results useful.

**Wrong duration format.** `totalTime` must be ISO 8601 duration, like `PT30M` for 30 minutes or `PT1H15M` for an hour and fifteen minutes. Writing "30 minutes" as a string won't parse.

**Nesting errors.** HowToStep items must be inside a `HowToSection` if you're grouping steps, or directly under the HowTo if you're not. Mixing both patterns in the same markup creates validation errors that are hard to debug.

## Why this matters beyond vanity

HowTo rich results are one of the few structured data types where Google shows your actual content in the SERP, not just metadata. A user can read your step summaries without clicking through. That sounds like it would reduce clicks, but the data tells a different story. Pages with HowTo rich results tend to get higher click-through rates because the expanded format signals authority and completeness. Users who see the steps and want the full details (images, explanations, tools) click through at higher rates than users scanning plain blue links.

For sites that rely on instructional content for traffic, HowTo markup is the difference between competing on title tags and competing on visible expertise. The [Schema Validator](/tools/schema-validator/) checks whether your JSON-LD passes Google's required-field rules. The [Schema Completeness](/tools/schema-completeness/) tool generates full JSON-LD graphs with all recommended properties filled in, so you're not guessing what Google wants.

## Validating your implementation

The [Schema Fix Bundle](/tools/schema-fix-bundle/) covers HowTo as one of its page types. Pick HowTo, and it emits a complete JSON-LD template with every required and recommended field, correctly nested `HowToStep` and `HowToSection` structures, proper ISO 8601 durations, and anchor URL patterns.

After adding the markup, run your page through the [JSON-LD Graph Linter](/tools/schema-jsonld-graph-linter/) to verify that all `@id` references resolve, no nodes are orphaned, and the nesting structure is valid. Then test in Google's Rich Results Test to confirm eligibility.

The broader pattern here applies to every structured data type: the schema specification is permissive, but Google's rich result requirements are strict. You can have valid JSON-LD that never triggers a rich result because it's missing fields Google treats as effectively required despite calling them "recommended." I covered this gap between specification and implementation in *The $97 Launch* when discussing how to build pages that actually rank rather than pages that merely exist.

## Related reading

- [Schema Validator](/tools/schema-validator/) checks JSON-LD against Google's required fields
- [Schema Fix Bundle](/tools/schema-fix-bundle/) generates complete JSON-LD for HowTo, Product, Article, and 13 other types
- [JSON-LD Graph Linter](/tools/schema-jsonld-graph-linter/) finds dangling references and orphan nodes in your schema graph
- [FAQ Schema Parity](/tools/faq-schema-parity/) validates FAQPage schema against visible page content
- [Blog: JSON-LD Nesting](/blog/blog-tool-json-ld-nesting/) covers the structural rules for nested schema types

## Fact-check notes and sources

- Google HowTo structured data documentation specifies `name` and `HowToStep` with `text` as required, with `totalTime`, `image`, `estimatedCost`, `supply`, `tool` as recommended. Source: Google Search Central, "HowTo structured data."
- ISO 8601 duration format uses the pattern `PnYnMnDTnHnMnS`. Source: ISO 8601:2004, Section 5.5.3.2.
- HowTo rich results display expandable steps directly in search results. Google paused showing HowTo rich results for desktop in September 2023 but retained them for mobile. Source: Google Search Central blog, September 2023.

*This post is informational, not SEO consulting advice. Schema markup eligibility and rich result display are determined by Google at its discretion.*


---

Canonical HTML: https://jwatte.com/blog/blog-tool-how-to-schema/
RSS: https://jwatte.com/feed.xml
JSON Feed: https://jwatte.com/feed.json
Hero image: https://jwatte.com/images/blog-tool-how-to-schema.webp
