HowTo schema markup: example, properties and WordPress setup
HowTo schema breaks a task into ordered steps, with optional tools, supplies, total time and images per step. It used to earn a step-by-step rich result in Google. That feature is gone: Google removed it from mobile in August 2023 and from desktop the following month.
So the honest case for HowTo today is narrow. If a page really is a set of instructions, the markup is a tidy, machine-readable version of those steps that crawlers and AI assistants can parse without guessing. If you were adding it only for the rich result, skip it and spend the time on the content. Recipes should always use Recipe schema instead, which still earns rich results.
JSON-LD example
Copy this into a <script type="application/ld+json"> tag and replace the values with your own.
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to replace a bike chain",
"totalTime": "PT25M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "30"
},
"tool": [
{
"@type": "HowToTool",
"name": "Chain breaker tool"
},
{
"@type": "HowToTool",
"name": "Chain checker"
}
],
"supply": [
{
"@type": "HowToSupply",
"name": "Replacement chain matching your drivetrain speed"
},
{
"@type": "HowToSupply",
"name": "Chain lubricant"
}
],
"step": [
{
"@type": "HowToStep",
"name": "Measure wear",
"text": "Place a chain checker on the chain. If it drops in fully at 0.75, replace the chain.",
"url": "https://example.com/replace-bike-chain#step-1"
},
{
"@type": "HowToStep",
"name": "Remove the old chain",
"text": "Shift to the smallest cog, then push a pin out with the chain breaker or open the quick link.",
"url": "https://example.com/replace-bike-chain#step-2"
},
{
"@type": "HowToStep",
"name": "Size the new chain",
"text": "Lay the new chain beside the old one and remove links until the lengths match.",
"url": "https://example.com/replace-bike-chain#step-3"
},
{
"@type": "HowToStep",
"name": "Install and lubricate",
"text": "Thread the chain through the derailleur, join it with the quick link, then apply one drop of lube per roller.",
"url": "https://example.com/replace-bike-chain#step-4"
}
]
}
Properties
| Property | Status | What it is |
|---|---|---|
name | Recommended | The task being described, such as "How to replace a bike chain". |
step | Recommended | An ordered array of HowToStep items. Group long guides with HowToSection. |
HowToStep.text | Recommended | The full instruction for the step. |
HowToStep.name | Recommended | A short label for the step. |
HowToStep.url / image | Recommended | A fragment URL pointing to the step on the page, and an image of the step. |
totalTime | Recommended | ISO 8601 duration such as PT30M. |
tool | Recommended | HowToTool items needed but not consumed. |
supply | Recommended | HowToSupply items consumed by the task. |
estimatedCost | Recommended | A MonetaryAmount for the cost of supplies. |
When to use it
Use HowTo only on pages whose main content is a sequence of steps to complete a task: a repair guide, a setup walkthrough, a craft project. Good candidates already have numbered steps in the visible content.
Don't use it for:
- Recipes. Recipe schema is the right type and still has rich results.
- Listicles and tips. "10 ways to save energy" is not a sequence of steps.
- Opinion or explainer posts. If there is no task, there is no HowTo.
Because there is no longer a Google feature attached, treat HowTo as optional. Article markup on the same post already covers authorship and dates.
Add it in WordPress
By hand. Print the JSON-LD from wp_head or a Custom HTML block. Give each step's heading an id so the step url values (#step-1) resolve to real anchors.
With Hydrogen SEO. Open the tutorial's SEO Settings sheet, choose HowTo, give it a name that states the task, and add each step in order with a short name and description. The plugin renders the JSON-LD server-side. Keep one action per step, written as an instruction.
One-off markup. The free schema generator in the Hydrogen SEO app at /seo/schema-generator produces HowTo JSON-LD from a name and a list of steps.
Common mistakes
- Adding it for a rich result that no longer exists. If that was the only reason, it is wasted effort.
- Steps that are not on the page. Every step in the markup should match visible instructions.
- One giant step. A single step containing the whole guide gives machines nothing to work with. Split actions.
- Durations in plain text. Use ISO 8601 (
PT25M), not "25 minutes". - HowTo on recipes. Use Recipe.
Test it
The Rich Results Test no longer reports HowTo as a rich result type, so use the Schema Markup Validator (validator.schema.org) to confirm the HowTo parses correctly and every step, tool and supply appears in the tree. Test the live URL after purging any page cache. For the rest of the page, the Rich Results Test is still useful to check Article or breadcrumb markup, and a free SEO audit will flag pages with no structured data at all.
Common questions
Does Google still show HowTo rich results?
No. Google removed them from mobile in August 2023 and from desktop in September 2023.
Will HowTo markup hurt my site now?
No. Valid HowTo markup is harmless. It simply no longer earns a Google search feature.
Should I remove existing HowTo schema?
There is no need to rush. If it accurately describes the steps on the page, it can stay. If it is broken or inaccurate, fix or remove it.
Is HowTo useful for AI answers?
It can help, since it states the steps in a structured form, but no AI provider publishes how much weight it gives schema. Clear numbered steps in the visible content matter at least as much.