Recipe Structured Data: Complete Implementation Guide
Recipe structured data enables your recipes to appear as rich results in Google Search, complete with images, ratings, preparation times, and calorie information. Recipe is one of the most visually impactful schema types, with dedicated carousels and prominent placement in search results. For food blogs, recipe websites, and any publisher with culinary content, properly implemented Recipe markup is essential for organic visibility and traffic.
Why Use Recipe Schema?
- Appear in Google's recipe carousel with an eye-catching image, star rating, and cooking time, dramatically increasing visibility for recipe searches.
- Display rich snippets showing preparation time, calorie count, and ratings directly in standard search results.
- Become eligible for Google Assistant recipe guidance, allowing users to follow your recipe hands-free on smart displays and speakers.
- Increase click-through rates with visually rich search listings that stand out from plain text results.
- Improve content discoverability through Google's recipe-specific search filters for diet type, cooking time, and ingredients.
Required Properties
These properties are required by Google for Recipe structured data to be eligible for rich results.
| Property | Description |
|---|---|
| name | The title of the recipe as it appears on the page. Should be descriptive and match the visible heading. |
| image | One or more high-quality photographs of the finished dish. Google recommends images in 16:9, 4:3, and 1:1 aspect ratios, each at least 50K pixels. |
| recipeIngredient | An array of strings listing each ingredient with its quantity and unit. Each ingredient should be a separate entry in the array. |
| recipeInstructions | The preparation steps, provided as an array of HowToStep objects (or HowToSection groups). Each step should contain a single, clear action. |
Recommended Properties
Adding these properties improves your chances of appearing in rich results and provides more context to search engines.
| Property | Description |
|---|---|
| prepTime / cookTime / totalTime | Duration values in ISO 8601 format (e.g. "PT30M" for 30 minutes). These appear directly in search results and help users filter recipes by time. |
| nutrition.calories | The calorie count per serving, specified within a NutritionInformation object. Displayed in rich results and useful for health-conscious searchers. |
| recipeYield | The number of servings or quantity the recipe produces (e.g. "4 servings" or "1 loaf"). Helps users assess portion sizes. |
| recipeCategory | The meal type or course, such as "Dinner", "Dessert", or "Starter". Aids in categorisation within recipe search results. |
| author | A Person or Organization object identifying who created the recipe. Supports authorship attribution and E-E-A-T signals. |
JSON-LD Example
Here is a complete Recipe structured data example you can use as a starting point. Or use our Recipe generator to create one automatically.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Classic Beef Wellington",
"image": [
"https://example.com/images/beef-wellington-16x9.jpg",
"https://example.com/images/beef-wellington-4x3.jpg",
"https://example.com/images/beef-wellington-1x1.jpg"
],
"author": {
"@type": "Person",
"name": "James Richardson"
},
"datePublished": "2026-01-20",
"description": "A traditional British beef Wellington with tender fillet, mushroom duxelles, and golden puff pastry. Perfect for a special occasion dinner.",
"prepTime": "PT45M",
"cookTime": "PT35M",
"totalTime": "PT1H20M",
"recipeYield": "6 servings",
"recipeCategory": "Main Course",
"recipeCuisine": "British",
"keywords": "beef wellington, dinner party, british classic, puff pastry",
"nutrition": {
"@type": "NutritionInformation",
"calories": "580 calories",
"fatContent": "32g",
"proteinContent": "42g"
},
"recipeIngredient": [
"1kg beef fillet, centre cut",
"500g chestnut mushrooms, finely chopped",
"6 slices Parma ham",
"500g ready-made puff pastry",
"2 tablespoons English mustard",
"2 egg yolks, beaten",
"2 shallots, finely diced",
"2 cloves garlic, minced",
"30g unsalted butter",
"Salt and freshly ground black pepper"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"text": "Season the beef fillet generously with salt and pepper. Sear in a hot pan with oil for 30 seconds on each side until browned all over. Brush with English mustard and allow to cool completely."
},
{
"@type": "HowToStep",
"text": "Finely chop the mushrooms and cook with butter, shallots, and garlic over medium heat for 10-12 minutes until all moisture has evaporated. Season and allow to cool."
},
{
"@type": "HowToStep",
"text": "Lay cling film on a work surface and arrange the Parma ham slices in an overlapping row. Spread the mushroom duxelles evenly over the ham."
},
{
"@type": "HowToStep",
"text": "Place the seared beef fillet at one end and roll tightly using the cling film to form a firm log shape. Twist the ends to secure and refrigerate for 30 minutes."
},
{
"@type": "HowToStep",
"text": "Roll out the puff pastry, remove the cling film from the beef, and wrap the pastry around it. Seal the edges with beaten egg yolk and score the top lightly."
},
{
"@type": "HowToStep",
"text": "Brush the pastry with egg yolk and bake at 200°C (fan 180°C) for 25-30 minutes until the pastry is deep golden and the internal temperature reaches 52°C for medium-rare."
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.8,
"reviewCount": 216
}
}
</script>How to Implement Recipe Schema
- 1Ensure each recipe page has a clear, visible structure with a title, ingredient list, step-by-step instructions, and at least one photograph of the finished dish.
- 2Build the JSON-LD block with "@type": "Recipe" and add the recipe name and image URLs. Include images in multiple aspect ratios for maximum compatibility.
- 3List all ingredients in the recipeIngredient array, with each ingredient as a separate string including quantity, unit, and preparation notes.
- 4Structure the cooking steps using recipeInstructions with HowToStep objects. Each step should describe a single action clearly and concisely.
- 5Add timing properties (prepTime, cookTime, totalTime) in ISO 8601 duration format, along with recipeYield, nutrition information, and author details.
- 6Validate using Google's Rich Results Test and check the Recipes report in Google Search Console to monitor indexing and any issues.
Common Mistakes to Avoid
- Combining multiple steps into a single recipeInstructions entry instead of breaking them into individual HowToStep objects, which reduces rich result quality.
- Omitting images entirely or using low-resolution photographs that do not meet Google's minimum size recommendations.
- Using incorrect ISO 8601 duration format for time properties — for example, writing "30 minutes" instead of "PT30M".
- Listing ingredients in a single comma-separated string rather than as separate entries in the recipeIngredient array.
- Including structured data for a recipe that is behind a paywall or login without using the appropriate access restrictions markup, violating Google's guidelines.
Testing & Validation
Before deploying your Recipe structured data, validate it using these tools:
- 1Google Rich Results Test — Paste your page URL or code snippet to check if your structured data is eligible for rich results.
- 2Schema Markup Validator — Validates your JSON-LD syntax against the schema.org specification.
- 3Google Search Console — After deployment, monitor the Enhancements report for any errors or warnings.
Frequently Asked Questions
What image sizes does Google recommend for recipe rich results?
Google recommends providing images in three aspect ratios: 16:9, 4:3, and 1:1. Each image should be at least 50,000 pixels (e.g. 250x200) and ideally much larger for high-quality display. Images must be of the actual finished dish — stock photos or illustrations are not acceptable.
How should I format cooking times in Recipe schema?
Use ISO 8601 duration format. "PT" marks the start, followed by hours (H) and minutes (M). For example: 1 hour 30 minutes is "PT1H30M", 45 minutes is "PT45M", and 2 hours is "PT2H". Include prepTime (preparation), cookTime (active cooking), and totalTime (combined).
Can I use Recipe markup for cocktail or drink recipes?
Yes. Recipe markup is appropriate for any food or drink preparation instructions, including cocktails, smoothies, and beverages. The same required properties apply — name, image, ingredients, and instructions.
Do I need to include nutrition information?
Nutrition information is recommended but not required. Including calorie counts and macronutrient data can enhance your rich result and makes your recipe eligible for nutrition-filtered searches. Only include nutrition data that is accurate and genuinely calculated.
Should I use HowToStep or plain text for recipeInstructions?
Google strongly recommends using HowToStep objects rather than plain text. Structured steps enable richer search features, including step-by-step guidance on Google Assistant and smart displays. Each step should contain one clear action in its text property.
Ready to Generate Your Recipe Schema?
Use our free generator to create valid Recipe structured data in seconds.
Open Recipe Generator