Recipe Schema Specification for AI Search Citations
Recipe schema is JSON-LD structured data that describes a cookable recipe to AI search engines and voice assistants. The required Google fields are name and image; recommended fields include recipeIngredient, recipeInstructions (typed as HowToStep), cookTime, prepTime, totalTime, recipeYield, nutrition, and aggregateRating.
TL;DR
Recipe schema turns prose recipes into machine-readable structured data. At minimum, AI engines need @type: Recipe, name, and image. To be eligible for Google rich results and clean AI citations, also include recipeIngredient[], recipeInstructions[] (as HowToStep objects), ISO 8601 cookTime/prepTime/totalTime, recipeYield, nutrition (NutritionInformation), author, datePublished, and aggregateRating. Use ItemList for recipe carousels and HowToStep (with optional inline image and name) for stepwise extraction.
What is Recipe schema
Recipe schema is a schema.org type (Thing > CreativeWork > Recipe) that describes a cookable recipe. It supersedes the legacy ingredients property with recipeIngredient and adds typed time durations, yield, nutrition, and step-by-step instructions.
For AI search and voice assistants, Recipe schema serves four jobs:
- Ingredient extraction. recipeIngredient[] gives engines a clean ingredient list for shopping list generation, dietary filtering, and substitution.
- Step-by-step playback. recipeInstructions[] typed as HowToStep lets voice assistants read each step aloud and lets AI Overviews surface a single step on demand.
- Time and yield reasoning. cookTime, prepTime, totalTime, and recipeYield let engines answer "how long" and "how many servings" without parsing prose.
- Nutrition and dietary signals. nutrition (NutritionInformation) and suitableForDiet enable filtering by diet and surfacing calorie or macro chips.
Required and recommended properties
Required for Google rich result eligibility
| Property | Type | Notes |
|---|---|---|
| @context | URL | Always https://schema.org |
| @type | Text | Recipe |
| name | Text | Recipe title |
| image | URL or ImageObject[] | Multiple high-resolution images recommended |
Google's Recipe documentation calls out name and image as the two strict requirements; the June 2025 documentation update clarified that image quality affects both rich result eligibility and organic text-result ranking.
Recommended (eligibility for full rich result + AI citation quality)
| Property | Type | Notes |
|---|---|---|
| author | Person or Organization | Required for E-E-A-T signals |
| datePublished | Date | ISO 8601 date |
| description | Text | 120-160 characters |
| recipeIngredient | Text[] | One ingredient per array entry |
| recipeInstructions | HowToStep[] | Use HowToStep, not free text |
| cookTime | Duration | ISO 8601, e.g. PT30M |
| prepTime | Duration | ISO 8601 |
| totalTime | Duration | ISO 8601, must equal cookTime + prepTime |
| recipeYield | Text or QuantitativeValue | e.g. 4 servings |
| recipeCategory | Text | e.g. dessert, entree |
| recipeCuisine | Text | e.g. Italian, Thai |
| nutrition | NutritionInformation | Calorie and macro data |
| aggregateRating | AggregateRating | User ratings; helps AI ranking signals |
| keywords | Text | Comma-separated; differs from tags |
| video | VideoObject | Recipe demo video |
| suitableForDiet | RestrictedDiet | e.g. https://schema.org/VeganDiet |
Canonical JSON-LD example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Recipe",
"@id": "https://example.com/recipes/lemon-pasta#recipe",
"name": "15-Minute Lemon Pasta",
"description": "A bright, weeknight lemon pasta with parmesan and parsley.",
"image": [
"https://example.com/images/lemon-pasta-1x1.jpg",
"https://example.com/images/lemon-pasta-4x3.jpg",
"https://example.com/images/lemon-pasta-16x9.jpg"
],
"author": { "@type": "Person", "name": "Sam Lee" },
"datePublished": "2026-05-03",
"prepTime": "PT5M",
"cookTime": "PT10M",
"totalTime": "PT15M",
"recipeYield": "4 servings",
"recipeCategory": "entree",
"recipeCuisine": "Italian",
"keywords": "lemon pasta, weeknight dinner, vegetarian",
"recipeIngredient": [
"400g spaghetti",
"2 lemons (zest + juice)",
"60g grated parmesan",
"3 tbsp olive oil",
"Salt and pepper to taste",
"Fresh parsley, chopped"
],
"recipeInstructions": [
{ "@type": "HowToStep", "name": "Boil pasta", "text": "Cook spaghetti in salted boiling water until al dente." },
{ "@type": "HowToStep", "name": "Make sauce", "text": "Whisk lemon zest, juice, olive oil, and parmesan in a bowl." },
{ "@type": "HowToStep", "name": "Toss and serve", "text": "Drain pasta, toss with sauce, garnish with parsley." }
],
"nutrition": {
"@type": "NutritionInformation",
"calories": "480 kcal",
"proteinContent": "14 g",
"carbohydrateContent": "72 g",
"fatContent": "15 g"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
}
}
</script>How AI engines use Recipe schema
AI search engines and voice assistants use Recipe schema in distinct retrieval modes:
- AI Overviews and ChatGPT Search extract recipeIngredient and recipeInstructions text directly into citation snippets.
- Google Assistant and voice cooking flows read HowToStep objects step-by-step and map cookTime/prepTime to timer prompts.
- Multimodal models pair image[] with name and description to ground visual recipe extraction (e.g., "what is in this dish").
- Diet and nutrition filters in AI shopping or meal-planning agents rely on nutrition and suitableForDiet.
Google's June 2025 Recipe documentation update confirmed images influence both rich result rendering and organic text ranking. AI engines that train on Google's index inherit that quality bias.
Implementation patterns
Pattern 1: Single recipe page
Embed one Recipe JSON-LD block per recipe page. The block should be on the recipe URL, not the homepage. Set @id to the recipe URL with a #recipe fragment so other schemas can reference it.
Pattern 2: Recipe carousel (host carousel)
For pages listing multiple recipes (e.g., "10 weeknight dinners"), use ItemList with each recipe represented as ListItem referencing the recipe's full URL. Each linked recipe page must have its own Recipe schema. Google calls this the Recipe host carousel pattern.
Pattern 3: HowTo-style recipes
For strict step-by-step recipes, recipeInstructions[] should contain HowToStep objects with name, text, and optionally image and url (deep link). For multi-section recipes (e.g., dough + filling), use HowToSection containing HowToStep[].
Pattern 4: Video recipes
Add video (VideoObject) with name, description, thumbnailUrl, contentUrl or embedUrl, uploadDate, and duration. AI engines use this to surface video citations alongside text.
Common mistakes
- Free text in recipeInstructions. Use HowToStep[] objects, not plain strings. Free-text instructions reduce rich result eligibility and break voice playback.
- Missing totalTime. Some engines reject Recipe blocks where totalTime is absent or doesn't equal prepTime + cookTime.
- Single low-resolution image. Provide multiple aspect ratios (1x1, 4x3, 16x9) at ≥ 1200px wide. Image quality affects ranking per Google's June 2025 update.
- Combining ingredients and recipeIngredient. ingredients is superseded; only use recipeIngredient.
- Skipping author. Recipe E-E-A-T signals depend on a clear author (Person or Organization) for trust.
- Wrong duration format. Durations must be ISO 8601 (PT30M, PT1H30M), not 30 minutes.
- Inflated aggregateRating. Ratings must reflect on-page reviews; fabricated ratings violate Google's spam policies.
How to validate
- Run Google's Rich Results Test on the recipe URL. It flags missing required fields and warns about recommended ones.
- Run the Schema Markup Validator for vocabulary correctness without Google-specific bias.
- Use Google Search Console's Recipe rich result report to monitor warnings; the report includes recipeInstructions and recipeIngredient warnings since March 2024.
- Verify ISO 8601 durations parse correctly: PT30M not 30 minutes.
FAQ
Q: What are the strictly required properties for Recipe schema?
For Google rich result eligibility, only name and image are strictly required. For AI citation quality, also include recipeIngredient, recipeInstructions (as HowToStep), cookTime, prepTime, totalTime, recipeYield, author, and datePublished.
Q: Should recipeInstructions be free text or HowToStep?
Use HowToStep[]. Free-text instructions are accepted by schema.org but reduce rich result eligibility and break stepwise voice playback. Each HowToStep should have at least text, ideally also name for short titles and optionally image for visual steps.
Q: What is the difference between cookTime, prepTime, and totalTime?
prepTime is hands-on prep before cooking. cookTime is active cooking time. totalTime is the whole elapsed time and should equal prepTime + cookTime. All three use ISO 8601 durations (e.g., PT30M).
Q: How do I mark a vegan or gluten-free recipe?
Use suitableForDiet with a schema.org RestrictedDiet URL such as https://schema.org/VeganDiet or https://schema.org/GlutenFreeDiet. Multiple diets can be listed in an array.
Q: Can I use Recipe schema for non-cooking recipes (e.g., cocktails, beauty mixes)?
For beverages, Recipe is the standard type and AI engines accept it. For non-cookable how-tos (e.g., DIY craft mixes), use HowTo instead of Recipe. Misusing Recipe for non-food content reduces citation quality.
Q: How do images affect AI citation likelihood?
Per Google's June 2025 documentation update, image quality affects both rich result eligibility and organic text-result ranking. AI engines downstream of Google inherit this bias, so multiple high-resolution images (1x1, 4x3, 16x9) at ≥ 1200px wide materially improve AI citation likelihood.
Related Articles
Image Sitemap Specification for Multimodal AI Citations
Image sitemap specification for multimodal AI citations: image:image markup, captions, license, geo-location, and signals AI engines extract for visual search.
Organization Schema Specification for AI Brand Citations
Organization schema specification for AI brand citations: required fields, sameAs entity linking, logo, ContactPoint, and how LLMs verify brand identity.
Structured Data for AI Search
How to implement structured data (JSON-LD / Schema.org) to improve AI search visibility. Covers TechArticle, FAQPage, HowTo, and entity definitions.