Recipe schema
Recipe is the gateway to two rich result formats: the single-recipe rich card and the food-blog carousel. The carousel is the prize — it lifts CTR considerably for the few keywords where Google displays it.
Required fields
- name — the recipe title.
- image — at least one URL, 1:1 / 4:3 / 16:9, at least 1200px on the long edge. For the carousel, the 1:1 image is what gets used as the thumbnail.
- recipeIngredient — an array of strings. Each string is one ingredient line as written on the page. Do not split into name/amount/unit; Google parses that itself.
- recipeInstructions — an array of
HowToStepobjects, not a single string. Even if your page shows the instructions as a single block, the schema must be stepwise. - author —
Personwithname.
Recommended
- prepTime, cookTime, totalTime — ISO 8601 durations like
PT30MorPT1H30M. Required to be eligible for the time-filtered carousel. - recipeYield — "4 servings" or similar.
- aggregateRating — technically optional, practically required for the carousel. Google rarely surfaces unrated recipes there.
- nutrition —
NutritionInformationwith at leastcalories. - video —
VideoObjectwithname,description,thumbnailUrl,uploadDate. Strongly helps placement.
Common mistakes
- Instructions as a single paragraph. A common Yoast default. Google validates it but the carousel UI looks bad and CTR suffers.
- Aspect ratio not 1:1, 4:3, or 16:9. Mobile carousel uses 1:1; without one, Google may use no thumbnail at all.
- Duration as "30 mins". Must be ISO 8601 (
PT30M). - Forgetting
aggregateRating. If your CMS has a review plugin, make sure its schema is merged into the Recipe object, not emitted as a separateReview.
CMS notes
- WordPress (WP Recipe Maker, Tasty Recipes): both emit valid Recipe schema. If you also have Yoast/Rank Math, disable their Recipe module so you don't get two competing copies.
- Squarespace / Wix: native blog templates don't emit Recipe schema. Use a custom HTML block.
- Headless: structure your CMS so each ingredient is a separate field, then map to the array at build time — never trust a single rich-text field to contain a clean list.
Generate it below
Last verified: 2026-05-15. Found something inaccurate? Email hello@schemapreview.dev.