b2KIT

Recipe Schema Builder

Build Recipe schema markup with ingredients, steps, nutrition, cook time, and ratings. Preview the rich result card.

Tested tool guide Tested browser tools Checked August 16, 2026

What Recipe Schema Builder does, with a checked example

The form takes the usual recipe facts - name, ingredients, steps, prep and cook times, servings, nutrition, ratings - and returns a schema.org Recipe JSON-LD block ready to paste into a page, plus a preview of the card Google-style results would show. Two conversions surprise people: times entered as "15 min" leave the tool as ISO 8601 durations (PT15M), and each ingredient must be a single self-contained line because recipeIngredient is a list of strings. The bigger surprise: a valid block may still never render, because card eligibility depends on rules the markup alone cannot satisfy, notably ratings from real users rather than the site owner.

Worked example

A concrete input and expected output from the current implementation.

Input

Name: Chocolate Chip Cookies. Author: Maya Chen. Cuisine: American. Category: Dessert. Description: Classic chocolate chip cookies with crisp edges and chewy centers. Prep: 15 min. Cook: 12 min. Servings: 24. Ingredients: 2 cups all-purpose flour, 1 cup unsalted butter softened, 3/4 cup brown sugar, 2 large eggs, 1 1/2 cups chocolate chips. Steps: (1) Cream the butter and sugar until fluffy. (2) Beat in the eggs, then mix in the flour and chips. (3) Drop spoonfuls onto a baking sheet and bake at 350 F for 12 minutes. Nutrition: 210 calories per cookie. Rating: 4.7 from 342 reviews. Image: https://example.com/cookies.jpg

Expected output

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Chocolate Chip Cookies",
  "author": "Maya Chen",
  "description": "Classic chocolate chip cookies with crisp edges and chewy centers.",
  "recipeCuisine": "American",
  "recipeCategory": "Dessert",
  "prepTime": "PT15M",
  "cookTime": "PT12M",
  "totalTime": "PT27M",
  "recipeYield": "24",
  "recipeIngredient": [
    "2 cups all-purpose flour",
    "1 cup unsalted butter, softened",
    "3/4 cup brown sugar",
    "2 large eggs",
    "1 1/2 cups chocolate chips"
  ],
  "recipeInstructions": [
    { "@type": "HowToStep", "text": "Cream the butter and sugar until fluffy." },
    { "@type": "HowToStep", "text": "Beat in the eggs, then mix in the flour and chips." },
    { "@type": "HowToStep", "text": "Drop spoonfuls onto a baking sheet and bake at 350 F for 12 minutes." }
  ],
  "nutrition": { "@type": "NutritionInformation", "calories": "210 calories" },
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.7", "reviewCount": "342" },
  "image": "https://example.com/cookies.jpg"
}

Each input maps to one schema.org property: the five ingredients become the recipeIngredient array, each step becomes a HowToStep object, prep and cook convert to PT15M and PT12M with totalTime computed as their sum (27 minutes), and the rating becomes an AggregateRating of 4.7 from 342 reviews.

How the result is produced

1

Field-by-field mapping

Every field maps to one schema.org property: ingredients become the recipeIngredient array of single-line strings, steps become recipeInstructions holding one HowToStep object each, and times convert to ISO 8601 durations, so 15 minutes is PT15M and 1 hour 30 minutes is PT1H30M. Total time defaults to prep plus cook unless you override it, servings become recipeYield, and the result is valid JSON-LD with @context https://schema.org and @type Recipe.

2

Preview and checks

Alongside the JSON it renders a Google-style result card from your values - thumbnail, title, star rating with review count, total time, servings, then the ingredients and steps in order - so you can see what a search engine would present. It flags missing required fields, non-numeric ratings, rating values outside 1 to 5, and a total time that does not match prep plus cook. The preview is a mock built from your data; only Google decides what actually renders.

Good uses

  • Publishing a food-blog post and needing the markup in the page head without a CMS plugin.
  • Hand-editing a static or plain HTML site where nothing generates structured data for you.
  • Rebuilding a recipe site and porting recipes from notes or a spreadsheet into consistent JSON-LD.

Limits and checks

  • The preview is a mock, not a promise: it renders whatever you type, while Google applies its own rules - a single complete recipe per page, genuine user-submitted ratings, a relevant image - and may show no card at all. Google announced in 2024 that it would deprecate recipe rich results, so verify current eligibility in the documentation before building on them.
  • Field formats are strict: calories must include the unit ("210 calories", not 210), ratingValue must sit between 1 and 5, and reviewCount must be a whole number. The builder flags violations but still lets you export, so the block can leave the tool already ineligible.
  • The exported JSON is a snapshot, not a source: it is not re-parsed afterward, so hand-editing the block can break it silently, and if you override total time so it no longer equals prep plus cook, the preview shows one number while the markup says another.

Common questions

Will Google show the recipe card if my markup validates?

Not necessarily. Valid markup is a prerequisite, not a guarantee. Google's rules also require a complete recipe, ratings submitted by actual users rather than the site owner, and a page whose main content is the recipe. Google announced in 2024 that it would deprecate recipe rich results, so the card may not appear or may stop appearing. The preview here only shows what your data would look like.

Why does the JSON say PT27M when I entered 27 minutes?

Search engines parse time as ISO 8601 durations: PT27M is 27 minutes, PT1H30M is 1 hour 30 minutes. The tool converts whatever you type into that format, and the human-readable version appears only in the preview card. Copy the block verbatim - the duration strings are what parsers read.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools