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:
- It is incremental visibility. The rich result is additional eligibility on queries the page may already rank for, so more of the result belongs to you instead of a competitor.
- It is higher-CTR real estate. An image, a star rating and a cook time pull the eye and the click in a way a text snippet cannot.
- On e-commerce, it feeds the store. Recipe and how-to content is top of funnel; the recipe result brings the cook who later buys the cut, the tuna, the pan. Markup on editorial content quietly becomes a storefront acquisition channel.
- It is a one-time cost that keeps earning. Valid markup is built once and paid for once; the appearance keeps returning clicks with no ongoing spend.
- It is defensive. On shared queries, the competitor with markup takes the rich result and the visual slot. Skipping schema cedes that real estate by default.
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
- Check whether your niche has a rich-result type worth targeting before investing, recipe, product, review, FAQ, how-to, event, video, job posting.
- Implement the full schema, required and recommended properties, not the bare minimum that merely validates.
- Validate and monitor. Test with the Rich Results Test, keep it valid as templates change, and watch the Enhancement reports and the Search Appearance breakdown in GSC.
- Treat rich-result eligibility as its own channel, with its own clicks, impressions and CTR, measured separately from rankings.
- Give it the time. The visible result can be nothing, or it can turn out to be the largest organic surface on the site.
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.