HowTo schema markup generator
HowTo markup is still valid schema.org, and it no longer produces a how-to rich result in Google Search. Almost every page ranking for this term was written while it did.
Google Search features this type can produce
From the registry| Feature | Status | Surface | Last verified |
|---|---|---|---|
| How-to (opens in a new tab) Google removed the How-to rich result. Exact effective date not recorded in this seed and must be confirmed against the Search Central changelog before this note is shown to users. | REMOVED | search | 2026-08-29 |
Meeting a feature’s documented requirements does not guarantee that the feature appears. No tool can promise that, and any that does is describing something it cannot know.
Generate the markup
Runs in your browser<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to descale an electric kettle",
"description": "Removing limescale from a kettle with white vinegar, in about half an hour.",
"step": [
{
"@type": "HowToStep",
"text": "Fill the kettle halfway with equal parts white vinegar and water."
},
{
"@type": "HowToStep",
"text": "Boil the kettle, then switch it off and leave it to stand for twenty minutes."
},
{
"@type": "HowToStep",
"text": "Pour the solution away and rinse the kettle three times with clean water."
},
{
"@type": "HowToStep",
"text": "Wipe the outside with a soft cloth, then boil a full kettle of clean water and discard it."
}
],
"supply": [
{
"@type": "HowToSupply",
"name": "White vinegar"
},
{
"@type": "HowToSupply",
"name": "Water"
}
],
"tool": [
{
"@type": "HowToTool",
"name": "Kettle"
},
{
"@type": "HowToTool",
"name": "Soft cloth"
}
],
"totalTime": "PT30M"
}
</script>Paste this into the <head> of the page it describes. Markup that describes a page must live on that page.
The short version
Google removed the how-to rich result. The markup did not become invalid, your pages did not break, and nothing you already have needs urgent attention — but the numbered steps that used to appear under a result are gone, and adding HowTo markup today will not bring them back.
If you are here because a guide told you HowTo markup wins extra space in the results, that guide was correct when it was written and is not correct now. This is the same pattern as FAQPage, removed a little earlier, and it is worth internalising the general lesson rather than just the two specific cases: a Google Search feature is a product decision, and product decisions get reversed.
Three separate questions people run together
Is HowTo valid schema.org? Yes. It was valid before the removal, it is valid now, and a schema.org validator will keep accepting it. Nothing about the vocabulary changed.
Does it produce a Google rich result? No. That is the part that ended.
Do other consumers read it? That is a third question with its own answer. Other search engines parse schema.org independently of Google, and systems that assemble content for retrieval read it too. None of that is a promise of anything visible, but it is not nothing, and it is a different question from the first two.
Keeping existing HowTo markup costs you nothing. Removing it is optional tidying. Adding it to a new page expecting a Google feature is building on something that is not there.
Reasons to still write it
The strongest one has nothing to do with search engines. Structuring instructions as discrete steps with a tool list, a supply list and a total time forces the content to be genuinely complete. A great many how-to articles are missing a required tool or an unstated assumption, and the exercise of filling in HowToSupply and HowToTool surfaces that before a reader hits it halfway through.
The second is that instructions are exactly the sort of content that gets extracted and reused by systems other than Google Search. Marking the steps explicitly is a clear, machine-readable statement of what the steps are and what order they go in.
The content requirement has not changed either way. Step text in the markup must appear in the visible page content — content a visitor can reveal by expanding a section counts, content that exists only inside the JSON-LD does not. Our validator treats a collapsed step list as visible, because it is.
How the type is structured
A HowTo has a name, an optional total time, and a step array. Each entry is a HowToStep with a text property and optionally its own name, image and url. Steps can be grouped into HowToSection where a long procedure has phases, though most instructions do not need the extra layer.
HowToSupply is what gets consumed — flour, screws, paint. HowToTool is what does not — a whisk, a screwdriver, a brush. The distinction is real and worth getting right, because “what do I need to buy” and “what do I need to own” are different questions for the reader.
totalTime takes an ISO 8601 duration: PT30M for thirty minutes, PT1H30M for an hour and a half. If the page displays “about 30 minutes”, the duration and the displayed text should agree — our validator treats PT30M and “30 minutes” as the same value, so the natural phrasing is fine.
Do not use HowTo for a recipe. Recipe is its own type with its own requirements and its own feature, which still exists. A recipe marked up as a HowTo describes it less well and forfeits the feature that is actually available.
Mistakes worth avoiding
Expecting the rich result to come back
Features have been removed and not restored before. Build on what is documented now and treat any return as a bonus rather than a plan.
Using HowTo for a recipe
Recipe is a distinct type, and its rich result still exists. Marking a recipe as a HowTo describes it worse and gives up the feature you could have had.
Steps in the markup that are not on the page
The visible-content requirement did not go away with the feature. Steps written more fully in the JSON-LD than in the article fail it, and are also the version nobody reads.
One step containing the whole procedure
A single HowToStep whose text is six paragraphs is a HowTo in name only. If the content is not genuinely stepwise, it may not be a HowTo at all — an Article describes it more honestly.
Confusing supplies with tools
HowToSupply is consumed, HowToTool is not. Listing a drill as a supply implies the reader needs to buy one per project.
Check what you already have
If the page you are marking up already carries structured data, audit it before adding more. Duplicate entities from a theme and a plugin are the most common finding on established sites, and adding a third block makes it worse rather than better.