Skip to content
SEO Madmanby Adam Hafez
Free tool

Recipe schema checker for required and recommended fields

Recipe schema checker: test Recipe JSON-LD for the required name and image, the calories and yield rule and ISO 8601 times. Free, runs in your browser.

Runs entirely in your browser. Nothing you enter is uploaded, logged or stored.

Parsed with the browser's own JSON.parse against Google's documented property tables for Recipe. Nothing you type is sent anywhere.

Key takeaways

  • Google documents only two required properties for Recipe, name and image, and treats every other field as recommended rather than required.
  • If nutrition.calories is defined, Google states that recipeYield must also be defined with the number of servings.
  • Google documents prepTime, cookTime and totalTime as ISO 8601 durations, so a free-text value like 30 minutes is not the documented format.
  • Google says it recommends HowToStep for recipeInstructions, which gives each step its own object instead of one block of text.
  • This checker reads only the JSON-LD typed in and cannot confirm that the image URL is crawlable or that the page is indexed.

What it takes

  • A pasted Recipe JSON-LD object

More tools

All of them free, all of them browser-only.

Browse the tools

How to use it

  1. 1Paste the Recipe JSON-LDCopy the contents of the script tag with type="application/ld+json" that describes the recipe, not the surrounding page markup.
  2. 2Fix name and image firstGoogle documents these two as the required properties; a Recipe node missing either is the first thing to repair.
  3. 3Resolve the calories ruleIf nutrition.calories is present, add recipeYield with the number of servings, since Google states the two must appear together.
  4. 4Convert times to ISO 8601Write prepTime, cookTime and totalTime as durations such as PT15M or PT1H30M rather than free text.
  5. 5Prefer HowToStep for instructionsWrap each step in a HowToStep object, the form Google recommends, then recheck for any remaining recommended gaps.

Paste the Recipe JSON-LD from a recipe page and this recipe schema checker tests it against the property tables in Google’s Recipe structured data documentation. It parses with the browser’s own JSON.parse, reports a syntax error before any property check, and sends nothing anywhere.

What this recipe schema checker checks

  • A Recipe node. It looks through a single object, an array or an @graph list for the first node whose @type is Recipe.
  • Required: name and image. Google documents only these two as required.
  • Fourteen recommended properties. author, datePublished, description, keywords, prepTime, cookTime, totalTime, recipeCategory, recipeCuisine, recipeIngredient, recipeInstructions, recipeYield, aggregateRating and video, each reported as present or missing.
  • The calories rule. Google states that if nutrition.calories is defined, recipeYield must be defined with the number of servings. The tool runs this check only when calories is present.
  • Duration format. Any prepTime, cookTime or totalTime present must be an ISO 8601 duration such as PT30M or PT1H30M.
  • Instruction format. Google recommends HowToStep for recipeInstructions. If any step is a plain string, the tool says so.

How to read the results

Problem means a documented requirement is broken: no Recipe node, a missing name or image, or calories without recipeYield. Warning means a value is present in the wrong format, which here is a time that is not an ISO 8601 duration. Info marks a recommended property that is absent, or instructions written as plain text. Pass means the check holds.

Only the two required fields and the calories rule can produce a Problem. A long list of Info rows is normal: Google treats those properties as recommended, and a checker that reported them as errors would overstate the problem.

Worked example

The tool opens with “Simple pancakes”: name, image, author, datePublished, prepTime PT10M, cookTime PT15M, recipeYield “4 servings”, three ingredients, nutrition.calories “270 calories” and two HowToStep objects. The results:

  • name and image: Pass.
  • author, datePublished, prepTime, cookTime, recipeIngredient, recipeInstructions, recipeYield: Pass.
  • description, keywords, totalTime, recipeCategory, recipeCuisine, aggregateRating, video: Info, “Missing”.
  • recipeYield with nutrition.calories: Pass.
  • prepTime and cookTime are ISO 8601 durations: Pass.
  • recipeInstructions uses HowToStep: Pass, “Structured steps”.

Delete recipeYield and two rows change: recipeYield becomes Info, and the calories rule becomes a Problem, because the node still defines calories. Change cookTime to “15 minutes” and its duration row turns to Warning.

Common mistakes it catches

  • A missing image. The page shows a photo, but the markup never references it. That is one of only two required properties.
  • Calories without servings. Nutrition added by a plugin while recipeYield was left empty.
  • Human-readable times. “15 minutes” or “1 hour” instead of PT15M or PT1H.
  • One block of instructions. recipeInstructions as a single string rather than separate HowToStep objects.

What it cannot check: whether the image URL is crawlable and meets Google’s size guidelines, whether prepTime and cookTime are used together, and whether the markup matches what the page shows.

Sources

  1. 1.Recipe (Recipe, HowTo, ItemList) structured data - Google Search CentralPrimary

Frequently asked questions

Does a valid Recipe node guarantee a rich result?

No. Google states that it does not guarantee that features that consume structured data will show up in search results, even when the requirements are met. Meeting them makes a page eligible; Google still decides whether to show the feature.

Is recipeIngredient required?

No. Google lists recipeIngredient among the recommended properties, so its absence is flagged here as information rather than as a problem.

Can the JSON-LD be inside an @graph?

Yes. This checker looks through a single object, an array or an @graph list for the first node whose @type is Recipe.

How do I write prepTime and cookTime?

As ISO 8601 durations, such as PT15M for 15 minutes or PT1H30M for an hour and a half. Google says to use prepTime and cookTime together, or totalTime. This checker validates the format of each value but does not check that the pair is complete.

What image does Google want for a recipe?

Google asks for an image of the completed dish and gives guidelines on aspect ratios, 16x9, 4x3 and 1x1, and a minimum resolution of 50K pixels. This checker confirms only that image is present, not its size or whether Googlebot can fetch it.