Case study · Schema

Recipe schema, and why "schema doesn't help rankings" misses the point

Structured data rarely moves a ranking, and teams take that to mean it does not matter. In the right niche, done in detail, it does something rankings can't: it unlocks whole result types worth thousands of clicks. Here is the case, with the data.

September 2026 · ~8 min read · recipe schema, rich results, GSC

The whole argument in one picture: same page, same rank, a very different amount of the screen.

Schema markup gets dismissed as a checkbox that does not move rankings. On a narrow reading, that is often true. Adding structured data rarely lifts a page's position on its own, and Google has said as much. But that framing measures the wrong thing. In the right niche, done properly, schema changes what your result looks like and which result types you are even allowed to appear in, and on the right site that is worth far more than a position or two.

The objection, and why it is only half right

The common experience is real: a team adds structured data, watches rankings not move, and concludes it was busywork. Structured data is not a ranking factor the way a strong backlink or better content is. So the markup gets added once and forgotten, or skipped entirely because "it doesn't do anything for SEO." The half that objection misses is that ranking was never what schema was for.

What schema actually buys: eligibility

What valid structured data buys is eligibility for a different kind of result. A page with correct Recipe markup can be shown as a Recipe rich result, with a thumbnail, a star rating, cook time and calories, and it can enter the Recipe gallery, the visual carousel that sits at the very top of many food queries. The URL is the same and the ranking is the same. What changes is that the result now carries an image and a rating, owns three to four times the pixels of a plain blue link, and sits in the module a searcher's eye lands on first. That is not a ranking lever. It is a presentation and eligibility lever, and on click-through-sensitive queries it compounds.

The evidence: two food brands

Both are e-commerce stores with a body of cooking and recipe content, and both mark that content up with Recipe schema. In Google Search Console, the Search Appearance filter isolates the clicks that came specifically from the Recipe rich results and Recipe gallery appearances, traffic that exists only because those pages qualify for those result types. Names are withheld; the reports themselves are below, unedited.

Brand A, a premium-beef e-commerce store

Google Search Console · Search Appearance filter · custom range, ~10 months since the markup went live

Recipe gallery: 4.48K clicks, 271K impressions, 1.7% CTR, average position 7.2. The line is flat at zero until the markup goes live, then climbs and holds.

Recipe rich results, same property and window: 2.88K clicks, 150K impressions, 1.9% CTR. Between the two appearances, roughly 7,400 clicks traceable to the recipe markup.

Brand B, a seafood e-commerce brand

Google Search Console · Search Appearance filter · 3-month window from a standing start

Recipe rich results: 2.26K clicks, 283K impressions, average position 8.9, from a standing start in mid-July.

Recipe gallery, same window: 231 clicks, 20.1K impressions, position 6.7. A different site and product, the same pattern, clicks that did not exist before the markup did.

These clicks are incremental. They exist because of the markup, not despite it, and nothing on the ranking side had to change for them to arrive.

Why it matters even when it "doesn't help SEO"

Grant the objection entirely, that the markup did not move a single ranking, and it still earns its place:

The honest part: schema is not magic

The objection is not wrong, it is incomplete, and it is worth being precise about the limits so this does not read as schema evangelism. Structured data will not rank a thin or irrelevant page; it is not a substitute for content, links or relevance. In a niche with no matching rich-result type, detailed markup may render nothing visible in the SERP, and the "we added it and saw nothing" reaction there is fair. And it only works when it is valid and complete: the right required and recommended properties, name, image, rating, prep and cook time, ingredients, steps, nutrition, kept valid as the template changes, or Google simply declines to draw the enhancement. So the rule is not "schema always wins." It is that in the niches which have a rich-result type, food, product, review, FAQ, how-to, events, video, jobs, detailed schema is a high-leverage, low-cost eligibility layer that deserves real time rather than a shrug.

What "complete" markup actually looks like

The gap between markup that validates and markup that earns the enhancement is the recommended fields most implementations skip. A minimal Recipe with just a name and ingredients will pass a validator and show almost nothing. The version below is the kind that qualifies for the rich result and the gallery, because it hands Google the exact things it draws: an image for the thumbnail, aggregateRating for the stars, prepTime / cookTime for the timing, real recipeInstructions as steps, and nutrition for the calorie line. It is a generic example, not any client's, but the shape is exactly what shipped:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Classic Banana Bread",
  "author": { "@type": "Organization", "name": "Example Kitchen" },
  "datePublished": "2026-01-12",
  "image": "https://example.com/images/banana-bread.jpg",
  "description": "A simple, moist one-bowl banana bread made with ripe bananas.",
  "prepTime": "PT10M",
  "cookTime": "PT55M",
  "totalTime": "PT65M",
  "recipeYield": "10 slices",
  "recipeCategory": "Dessert",
  "recipeCuisine": "American",
  "recipeIngredient": [
    "3 ripe bananas, mashed",
    "2 cups all-purpose flour",
    "1/2 cup butter, melted",
    "3/4 cup sugar",
    "1 egg",
    "1 tsp baking soda"
  ],
  "recipeInstructions": [
    { "@type": "HowToStep", "text": "Heat the oven to 175C and grease a loaf tin." },
    { "@type": "HowToStep", "text": "Mix the mashed bananas with the melted butter, then stir in the sugar and egg." },
    { "@type": "HowToStep", "text": "Fold in the flour and baking soda until just combined." },
    { "@type": "HowToStep", "text": "Pour into the tin and bake for about 55 minutes, until a skewer comes out clean." }
  ],
  "nutrition": { "@type": "NutritionInformation", "calories": "220 calories" },
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.7, "reviewCount": 128 }
}
</script>

Strip out the rating, the image or the times and the result quietly degrades back toward a plain link. The detail is not decoration, it is the eligibility.

How to get it right

Schema rarely moves the ranking. Sometimes it moves everything else, the image, the rating, the real estate, the click, and on the right site that is worth far more than a position or two. That is the case for giving your structured data a bit more of your time than it usually gets.

What this used

Schema.org RecipeJSON-LDRecipe rich resultsRecipe galleryGoogle Search Console (Search Appearance)Rich Results TestGSC Enhancement reports
← more case studies