---
title: "Recipe markup checker — Tiny Plates"
description: "Check any recipe page for free. See what a machine reads from its schema.org markup, what is missing or broken, and how to fix it. No sign-up."
url: "https://www.tinyplates.dev/tools/recipe-markup-checker"
---

# Recipe markup checker

Paste a recipe page and see what a machine reads from it. We list what is missing or broken in its schema.org markup, and how to fix it. It’s free and needs no sign-up.

## What it checks

* Every JSON-LD block on the page, and whether it is valid JSON.
* The fields Google requires, such as the name and an image, and the ones it recommends, such as times, yield and nutrition.
* Whether durations and dates use ISO 8601.
* Whether ingredients and steps can be read as separate lines.
* Whether the recipe survives our normalizer, the code behind the [Tiny Plates recipe API](https://www.tinyplates.dev/docs).

## Why recipe markup breaks

Recipe markup looks simple and often isn’t. When we [studied it across recipe sites](https://www.tinyplates.dev/blog/recipe-schema-markup-in-the-wild), 15% of pages had JSON-LD that `JSON.parse` rejects, and only 1 of 22 sites set `inLanguage`. The recipe sat inside `@graph` 56% of the time, so a parser that only looks at the top level misses most of them.

## Questions

### How does the recipe markup checker work?

Paste the address of a recipe page. We fetch that page once, find its schema.org Recipe in the JSON-LD, and run it through the same code we use for our own recipe API. You see every problem, and what a machine really reads from the page.

### Do I need an account?

No. It is free and needs no account. You can run 30 checks an hour.

### Do you keep the pages I check?

No. We do not store the address you check or the page we fetch. We keep a hash of your IP address for up to two hours to enforce the limit.

### Why does a site refuse the check?

Many sites block automated requests. Allow the user agent TinyPlatesMarkupChecker, or check a page on a site you run.
