SEO · Structured data

Recipe Schema Generator

This recipe schema generator builds valid Recipe JSON-LD with ingredients, step-by-step instructions, cooking times in ISO 8601, servings, calories and ratings, and flags what Google requires and what it only recommends.

Eligible for a Google rich result

Recipe markup can make a recipe eligible for a rich result with image, rating, cooking time and calories, and for the recipe carousel. Google requires a name and an image.

Status verified on 24 September 2026 · Google’s Recipe documentation

Fill in your details

Photos of the finished dish, one URL per line. Several aspect ratios (16:9, 4:3, 1:1) are recommended.

ISO 8601 duration: PT20M is 20 minutes, PT1H30M is 90 minutes.

Use this instead of prep and cook time if you only know the total.

One ingredient per line, exactly as listed on the page.

InstructionsRecommended
Step 1
Step 2
Step 3
Step 4

Needs the servings field too.

Aggregate ratingOptional

Only if the page shows real ratings.

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Chicken Karahi",
  "image": [
    "https://example.com/img/chicken-karahi-16x9.jpg",
    "https://example.com/img/chicken-karahi-1x1.jpg"
  ],
  "author": {
    "@type": "Person",
    "name": "Amina Rahman"
  },
  "datePublished": "2026-02-10",
  "description": "A quick, tomato-based karahi with ginger, green chilli and fresh coriander.",
  "prepTime": "PT20M",
  "cookTime": "PT40M",
  "recipeYield": "4 servings",
  "recipeCategory": "Dinner",
  "recipeCuisine": "Pakistani",
  "keywords": "chicken, karahi, one-pot",
  "recipeIngredient": [
    "1 kg chicken, cut into pieces",
    "6 ripe tomatoes, chopped",
    "3 tbsp oil",
    "2 tbsp ginger-garlic paste",
    "4 green chillies",
    "Fresh coriander to serve"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "Heat the oil in a wok and fry the ginger-garlic paste for one minute."
    },
    {
      "@type": "HowToStep",
      "text": "Add the chicken and cook on high heat until it changes colour."
    },
    {
      "@type": "HowToStep",
      "text": "Add the tomatoes and chillies, cover and cook for 30 minutes, stirring occasionally."
    },
    {
      "@type": "HowToStep",
      "text": "Finish with coriander and serve hot."
    }
  ],
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "320 calories"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.8,
    "ratingCount": 210
  }
}

Validation — no errors

All required and recommended fields are present and correctly formatted.

Rich result preview (illustration)

example.com
Chicken Karahi
4.8 (210)· 40 min· 320 calories

Ingredients: 1 kg chicken, cut into pieces, 6 ripe tomatoes, chopped, 3 tbsp oil, 2 tbsp ginger-garlic paste, 4 green chillies…

An illustration of the kind of result this markup could produce — not a guarantee. Google decides whether to show a rich result at all.

The markup is generated in your browser from what you type. Nothing is uploaded.

Recipe schema: required vs recommended properties

Google requires only a name and an image for Recipe markup, but the recommended properties — times, yield, ingredients, instructions and nutrition — are what make a recipe eligible for the richer results.

PropertyStatusFormatNotes
Recipe nameRequiredText
Image URLsRequiredListPhotos of the finished dish, one URL per line. Several aspect ratios (16:9, 4:3, 1:1) are recommended.
Instructions › StepRequiredText
Author nameRecommendedText
Date publishedRecommendedDate, YYYY-MM-DD
DescriptionRecommendedText
Preparation timeRecommendedDuration, ISO 8601ISO 8601 duration: PT20M is 20 minutes, PT1H30M is 90 minutes.
Cooking timeRecommendedDuration, ISO 8601
ServingsRecommendedText
CategoryRecommendedText
CuisineRecommendedText
IngredientsRecommendedListOne ingredient per line, exactly as listed on the page.
InstructionsRecommendedRepeated group
Total timeOptionalDuration, ISO 8601Use this instead of prep and cook time if you only know the total.
KeywordsOptionalText
Calories per servingOptionalTextNeeds the servings field too.
Aggregate ratingOptionalGroupOnly if the page shows real ratings.
Aggregate rating › Rating valueOptionalNumber
Aggregate rating › Number of ratingsOptionalNumber

Is Recipe markup eligible for a Google rich result?

Recipe markup can make a recipe eligible for a rich result with image, rating, cooking time and calories, and for the recipe carousel. Google requires a name and an image.

Status verified on 24 September 2026. Google’s documentation: https://developers.google.com/search/docs/appearance/structured-data/recipe

About Recipe structured data

Recipe is one of the structured data types that Google displays most richly: a result can show a photo, a star rating, the cooking time and the calories, and eligible recipes can appear in a carousel. That makes complete, accurate markup worthwhile.

Where a recipe has a video, marking it up as a VideoObject inside the Recipe can help. Keep the markup a faithful summary of the page: ingredients and steps should be what visitors read.

Common Recipe schema mistakes

  • Writing durations in plain text such as “1 hour 30 minutes”. Times must be ISO 8601 durations: PT1H30M. PT20M is twenty minutes.
  • Adding calories without servings. Calories are per serving, so Google needs recipeYield to interpret the number.
  • Listing the ingredients or steps in the markup but not on the page. Everything in the markup should be visible to visitors.
  • Using one long block of text for the instructions. Splitting it into HowToStep entries makes each step clear.
  • Marking up something that is not a recipe — a restaurant menu, a list of recipes on a category page, or a general cooking article.
  • Adding ratings that visitors cannot see, or that you wrote yourself.

Recipe schema example

A complete recipe with two images, six ingredients, four steps, times, calories and a rating, as generated on this page, is shown below.

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Chicken Karahi",
  "image": [
    "https://example.com/img/chicken-karahi-16x9.jpg",
    "https://example.com/img/chicken-karahi-1x1.jpg"
  ],
  "author": {
    "@type": "Person",
    "name": "Amina Rahman"
  },
  "datePublished": "2026-02-10",
  "description": "A quick, tomato-based karahi with ginger, green chilli and fresh coriander.",
  "prepTime": "PT20M",
  "cookTime": "PT40M",
  "recipeYield": "4 servings",
  "recipeCategory": "Dinner",
  "recipeCuisine": "Pakistani",
  "keywords": "chicken, karahi, one-pot",
  "recipeIngredient": [
    "1 kg chicken, cut into pieces",
    "6 ripe tomatoes, chopped",
    "3 tbsp oil",
    "2 tbsp ginger-garlic paste",
    "4 green chillies",
    "Fresh coriander to serve"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "Heat the oil in a wok and fry the ginger-garlic paste for one minute."
    },
    {
      "@type": "HowToStep",
      "text": "Add the chicken and cook on high heat until it changes colour."
    },
    {
      "@type": "HowToStep",
      "text": "Add the tomatoes and chillies, cover and cook for 30 minutes, stirring occasionally."
    },
    {
      "@type": "HowToStep",
      "text": "Finish with coriander and serve hot."
    }
  ],
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "320 calories"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.8,
    "ratingCount": 210
  }
}

How to use it

  1. Fill in the recipe details — the form marks each field Required, Recommended or Optional.
  2. Watch the JSON-LD and the validation list update as you type.
  3. Copy the JSON-LD, the HTML script tag or the Next.js snippet, or download the .json file.
  4. Paste it into your page, then check it with Google’s Rich Results Test.

Frequently asked questions

Which properties are required for Recipe schema?

A name and an image. Author, date published, description, times, yield, ingredients, instructions, category, cuisine, calories, rating and video are recommended.

How do I write cooking time in schema?

As an ISO 8601 duration: PT15M for 15 minutes, PT1H for an hour, PT1H30M for an hour and a half. The generator checks the format.

Do I need both prep time and cook time?

Google recommends prepTime and cookTime together, or a totalTime on its own. Use whichever you can state accurately.

How are instructions marked up?

As a list of HowToStep objects, each with the text of one step. You can group steps into sections, and steps can include images.

Does Recipe markup guarantee a rich result?

No. It makes the recipe eligible; Google decides whether to show the rating, image and times.

Valid markup makes a page eligible for a rich result; it does not guarantee one. Google decides what to show. Test your page with Google’s Rich Results Test before relying on it.