HowTo Schema Generator
Generate HowTo JSON-LD to unlock step-by-step rich results in Google Search
Configure Schema
Article: Blog posts, news articles, guides
Generated Schema
// Fill in the form to generate schema markup
Other Schema Generators
About HowTo Schema Generator
HowTo schema markup enables Google to display step-by-step instructions directly in search results — showing numbered steps, estimated time, required tools and materials, and images for each step. These HowTo rich results are among the most visually prominent in Google Search, appearing as rich cards that expand to show your guide's structure before users even click through.
HowTo rich results are particularly valuable for tutorial content, DIY guides, recipes adapted as how-tos, technical documentation, and any content that walks users through a process step by step. The expanded view in search results acts as a preview that pre-qualifies users — those who see the steps and recognize them as relevant are more likely to click, while those who see it's too complex or simple for their needs self-select out, improving overall engagement metrics.
The HowTo schema generator creates valid JSON-LD with all required and recommended properties — including title, description, total time, cost, required tools, required supplies, and detailed step objects with text and optional images for each step. The output passes Google's Rich Results Test and is ready to implement in any web platform.
HowTo Schema Rich Result Features
HowTo schema unlocks several distinct rich result formats depending on how Google decides to display it. The most common is the step list — a numbered series of steps shown beneath the search result. Google may also display a carousel of HowTo results for broad how-to queries, showing multiple guides from different sites in a visually rich format.
The HowTo schema supports optional but impactful properties beyond the basic steps. totalTime in ISO 8601 duration format (e.g., PT30M for 30 minutes) appears prominently in rich results, helping users gauge whether they have time for the task. estimatedCost with a MonetaryAmount or Text value shows the expected cost. The tool and supply arrays list required equipment and materials — particularly useful for DIY and crafting content.
Each step in a HowTo schema can include an image — a photo showing the step being performed or the expected result. Step images appear in Google's rich results and significantly increase the visual appeal and informativeness of the rich result. If you're investing in tutorial photography, implementing HowTo schema with step images maximizes the return on that investment.
Key Considerations
Step Content Must Be on Page
Like FAQ schema, HowTo step content must be visible to users on the page. Steps only present in schema but not in the page's rendered content may cause schema validation to fail. Generate your step schema from the same data that renders your visible step-by-step content.
Time in ISO 8601 Duration
The totalTime, prepTime, and performTime fields use ISO 8601 duration format. PT30M means 30 minutes, PT1H30M means 1 hour 30 minutes, P2D means 2 days. Incorrect format will cause validation errors. Include time estimates whenever possible — they're prominently displayed in rich results and help users decide if the guide is right for their situation.
Step Images for Rich Results
Adding images to each HowTo step significantly increases rich result display quality. Each step's image should show the step being performed or its expected result. Images must be crawlable and at least 1200x675px for best display. Step images are among the most click-worthy elements in HowTo rich results.
Tools and Supplies
Include the tool array for equipment needed (drill, mixing bowl, IDE) and supply array for consumable materials (screws, flour, npm package). These appear as lists in rich results and help users prepare before starting. Use HowToTool and HowToSupply types for each item with a name property.
Common HowTo Issues
Schema Structure Errors
- •Steps not using HowToStep type — must be explicitly typed
- •Missing name property on HowToStep objects
- •Missing text property in step — the instruction text is required
- •Using wrong duration format for totalTime — must be ISO 8601
Content Issues
- •Steps in schema not matching visible steps on page
- •Steps too vague to be useful as rich result snippets
- •Too many steps making the rich result unwieldy
- •Missing supply or tool arrays for hands-on guides that require materials
Image Issues
- •Step images too small for rich result display
- •Missing alt text on step images
- •Step images not showing the actual step being performed
- •Images hosted on authentication-required servers blocking Google crawler
Implementation Guide
Complete HowTo JSON-LD Schema
Full HowTo schema with steps, time, tools, and supplies:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Set Up Next.js with TypeScript",
"description": "A step-by-step guide to creating a new Next.js 15 project with TypeScript configuration.",
"image": "https://example.com/images/nextjs-setup.jpg",
"totalTime": "PT15M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "0"
},
"tool": [
{ "@type": "HowToTool", "name": "Node.js 18+" },
{ "@type": "HowToTool", "name": "npm or yarn" },
{ "@type": "HowToTool", "name": "Code editor (VS Code recommended)" }
],
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Install Next.js",
"text": "Run npx create-next-app@latest my-app --typescript in your terminal. Answer the configuration prompts to set up your project preferences.",
"image": "https://example.com/images/step1-install.jpg",
"url": "https://example.com/guides/nextjs-setup#step-1"
},
{
"@type": "HowToStep",
"position": 2,
"name": "Navigate to project directory",
"text": "Change into your new project directory with cd my-app. You'll see the complete Next.js project structure with TypeScript configuration already set up.",
"image": "https://example.com/images/step2-navigate.jpg",
"url": "https://example.com/guides/nextjs-setup#step-2"
},
{
"@type": "HowToStep",
"position": 3,
"name": "Start the development server",
"text": "Run npm run dev to start the development server. Open http://localhost:3000 in your browser to see your new Next.js app running.",
"image": "https://example.com/images/step3-start.jpg",
"url": "https://example.com/guides/nextjs-setup#step-3"
}
]
}
</script>Dynamic HowTo Schema in Next.js
Generate HowTo schema from your guide content data:
// components/HowToSchema.tsx
interface HowToStep {
name: string;
text: string;
image?: string;
url?: string;
}
interface HowToProps {
name: string;
description: string;
totalTime?: string; // ISO 8601 e.g. "PT30M"
tools?: string[];
steps: HowToStep[];
}
export function HowToSchema({ name, description, totalTime, tools, steps }: HowToProps) {
const schema = {
"@context": "https://schema.org",
"@type": "HowTo",
name,
description,
...(totalTime && { totalTime }),
...(tools?.length && {
tool: tools.map((t) => ({ "@type": "HowToTool", name: t })),
}),
step: steps.map((step, i) => ({
"@type": "HowToStep",
position: i + 1,
name: step.name,
text: step.text,
...(step.image && { image: step.image }),
...(step.url && { url: step.url }),
})),
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}Common Use Cases
- Technical tutorials with numbered implementation steps
- DIY and crafting guides with materials and tool lists
- Recipe-style guides adapted to non-food instructional content
- Software setup and configuration walkthroughs
- Business process documentation with step-by-step workflows
Pro Tip
Add anchor links to each step URL in your HowTo schema (e.g., /guide#step-3). This lets Google link directly to specific steps in rich results, and it improves the user experience by letting users jump to where they left off. It also creates clear URL anchors that can be shared and linked to independently.