SEO for recipe blogs on WordPress

SEO for recipe blogs revolves around Recipe structured data, because recipe results are among the most visual rich results left in Google: a photo, star rating, cook time and calories, and a place in recipe carousels. Complete, accurate Recipe markup on every recipe post is the single most valuable technical step.

After that, food blogs win on what AI summaries and recipe aggregators cannot copy: tested recipes with real notes on why they work, substitutions you have tried, step photos from your own kitchen, and pages that load quickly despite heavy ad layouts.

Pages every recipe blogs site needs

  • Recipe posts. One recipe per URL, with the ingredient list and steps as text in a recipe card, plus the photos and notes that make it yours.
  • Recipe roundups. Collections such as "30 weeknight chicken dinners" that link to individual recipe pages. They rank for broad searches and pass links into your recipes.
  • Category and cuisine hubs. Hubs by course, diet, cuisine or main ingredient, with a short introduction and your best recipes at the top.
  • Technique posts. How to temper chocolate, how to proof bread. They answer questions readers have mid-recipe and give you something to link to from recipe steps.
  • About page. Your cooking background and how you test recipes. It supports the experience behind every post.

One source of Recipe markup, filled completely

Recipe card plugins print their own Recipe JSON-LD, and Hydrogen SEO also offers a Recipe schema type in the SEO Settings sheet. Pick one source per post; two Recipe blocks with different times or yields send conflicting signals. If you use a card plugin, leave Hydrogen's Recipe type off for those posts.

Google requires only name and image, but the display comes from recommended fields: recipeIngredient, recipeInstructions as HowToStep items, prepTime, cookTime and totalTime as ISO 8601 durations, recipeYield, nutrition.calories, recipeCategory, recipeCuisine and video. Everything in the markup must be visible on the page. Full field notes are on the Recipe schema page.

Images and ratings

Google recommends high-resolution images of the finished dish in 16x9, 4x3 and 1x1 ratios, each at least 50,000 pixels in area, so it can crop for different layouts. The tall 2:3 image you make for Pinterest is great on the page, but it should not be the only image in the markup.

Reader ratings on a recipe are eligible for stars (the self-serving rule covers businesses rating themselves) as long as they come from real readers and the rating widget is on the page. Do not seed ratings yourself or import them from social comments. Write alt text that describes the dish and the stage ("shaping the dough into a boule"); the step photos are also candidates for image search.

Readers complain about long preambles, and many will skip straight to the card. A "Jump to recipe" link at the top is good for them and harmless for SEO. Keep the text above the card useful: why the method works, ingredient notes, substitutions you tested and what can go wrong. Filler written only to make the post longer helps nobody and reads that way to Google too.

Display ads are the main source of layout shift on food blogs. Reserve space for every ad slot so content does not jump, cap ads in the recipe card itself, and test on a mid-range phone. Hydrogen SEO's video sitemap can list recipe videos embedded in posts, which helps them appear in video results.

Recipe schema example

A starting point for your site. Replace every value with your own, and only mark up what is visible on the page.

json
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Brown Butter Skillet Cornbread",
  "image": [
    "https://example.com/images/cornbread-16x9.jpg",
    "https://example.com/images/cornbread-4x3.jpg",
    "https://example.com/images/cornbread-1x1.jpg"
  ],
  "author": {
    "@type": "Person",
    "name": "June Albright"
  },
  "datePublished": "2026-02-03",
  "description": "Crisp-edged cornbread baked in a cast iron skillet with brown butter and a little honey.",
  "prepTime": "PT15M",
  "cookTime": "PT25M",
  "totalTime": "PT40M",
  "recipeYield": "8 servings",
  "recipeCategory": "Side dish",
  "recipeCuisine": "Southern",
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "260 calories"
  },
  "recipeIngredient": [
    "1 cup yellow cornmeal",
    "1 cup all-purpose flour",
    "6 tablespoons unsalted butter",
    "1 1/4 cups buttermilk",
    "2 large eggs"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "Heat the oven to 425°F and put a 10-inch cast iron skillet inside to preheat."
    },
    {
      "@type": "HowToStep",
      "text": "Brown the butter in a small pan until it smells nutty, then cool slightly."
    },
    {
      "@type": "HowToStep",
      "text": "Mix the batter, pour it into the hot skillet and bake for 22 to 25 minutes."
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.8,
    "ratingCount": 96
  }
}

Checklist

  • Use one source of Recipe markup per post
  • Fill times, yield, calories, category and cuisine in the markup
  • Write instructions as separate HowToStep items
  • Provide 16x9, 4x3 and 1x1 images of the finished dish
  • Collect ratings from readers on the page, never seed them
  • Add a jump-to-recipe link near the top
  • Reserve fixed space for ad slots to prevent layout shift
  • Link roundups to individual recipe pages instead of marking them up
  • Turn on the video sitemap if you embed recipe videos
  • Describe step photos in alt text

Common questions

Can I use Recipe schema on a roundup post?

Not for the recipes that live on other pages. Mark up the recipe on its own page; a summary page can use an ItemList that points to those pages for carousel eligibility.

Do long recipe intros hurt rankings?

Length by itself is not the problem. Filler is. Useful notes on method and substitutions help readers; padding added only for length does not.

Should I use my recipe card plugin's schema or my SEO plugin's?

Either, but only one per post. Card plugins are convenient because the markup is generated from the same fields readers see.