SEO audit All SEO tools Site vs Site Blog Search

Language

EnglishالعربيةEspañolFrançaisDeutschPortuguêsItalianoРусскийTürkçeRomânăBahasa Indonesia简体中文日本語हिन्दी
Sign in

On-page SEO

Meta Tags AnalyzerSERP Snippet PreviewHeading Structure CheckerImage Alt Text CheckerOpen Graph & Social Preview CheckerStructured Data ValidatorCanonical Tag CheckerLink AnalyzerHreflang Checker

Technical SEO

Full Site Audit (Crawler)Robots.txt TesterXML Sitemap CheckerRedirect CheckerBulk HTTP Status CheckerHTTP Headers CheckerBroken Link CheckerIndexability CheckerMobile-Friendly CheckerJavaScript SEO Checker

Speed & performance

Page Speed TestCore Web Vitals CheckerServer Response Time (TTFB) TestPage Size CheckerGzip & Brotli Compression TestHTTP/2 & HTTP/3 CheckerCSS MinifierJavaScript Minifier

Content & keywords

Keyword Density CheckerKeyword Suggestion ToolWord CounterReadability CheckerText to HTML Ratio CheckerURL Slug GeneratorCase Converter

Generators

Meta Tag GeneratorRobots.txt GeneratorSchema Markup GeneratorOpen Graph GeneratorXML Sitemap GeneratorRedirect Generator (.htaccess & Nginx)Hreflang Tag GeneratorUTM Campaign URL Builderllms.txt Generator

Domain & security

SSL Certificate CheckerSecurity Headers CheckerDNS LookupWHOIS / Domain LookupDomain Age CheckerMixed Content CheckerWebsite IP & Hosting LookupWebsite Technology Checker

AI search & AI writing

AI Search Readiness CheckerAI Title & Meta Description GeneratorAI FAQ & Schema GeneratorAI Content Brief GeneratorAI Content Optimizer
Technical SEO

Structured Data and Schema Markup: A Beginner’s Guide

Schema markup helps search engines and AI systems understand exactly what your content is – and can make pages eligible for rich results. Learn which types to use and how to add JSON-LD.

Search engines are good at reading text, but they still have to guess what things are. Is “Apple” a fruit or a company? Is “£49” a price, and for which product? Is that date when an event starts or when an article was published?

Structured data removes the guesswork. It is code that labels the content on a page using a shared vocabulary – schema.org – so search engines and AI systems can understand it precisely.

What structured data does for you

  • Eligibility for rich results – enhanced listings such as product prices and ratings, breadcrumbs, event dates, recipe details and video thumbnails
  • Better understanding – helping search engines connect your organisation, products, authors and content as entities
  • Clearer signals for AI systems that read pages to build answers

Structured data is not a direct ranking factor. But rich results stand out on the results page and often earn more clicks, and clear entity information helps machines represent your business accurately.

There are three formats – JSON-LD, Microdata and RDFa. Google recommends JSON-LD, a block of script that sits in the page without being tangled into your HTML:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Coffee Roasters",
  "url": "https://acmecoffee.example",
  "logo": "https://acmecoffee.example/logo.png",
  "sameAs": [
    "https://www.instagram.com/acmecoffee",
    "https://www.linkedin.com/company/acmecoffee"
  ]
}
</script>
  • @context says which vocabulary is used (schema.org)
  • @type says what the thing is
  • The other properties describe it
Schema Markup Generator

Create JSON-LD structured data for articles, FAQs, products, businesses, events and more.

Open the Schema Markup Generator

The schema types most sites need

Organization (or LocalBusiness) – on the homepage

Describes who you are: name, URL, logo, social profiles and contact details. Local businesses should use LocalBusiness (or a more specific subtype such as Restaurant or Dentist) with address, phone number and opening hours.

WebSite – on the homepage

Declares your site name, which Google can use for the site name shown in results.

Describes the page’s position in your site hierarchy. Google often shows breadcrumbs instead of the raw URL in results.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Guides", "item": "https://example.com/guides/" },
    { "@type": "ListItem", "position": 3, "name": "Composting at home" }
  ]
}

Article / BlogPosting – on articles

Headline, author, publish and update dates, and image. Author and date information also supports trust signals.

Product – on product pages

Name, image, description, brand, and an Offer with price, currency and availability. Adding genuine review ratings can make products eligible for review stars. Merchant listing features also draw on shipping and return policy information.

Other useful types

  • Event – name, dates, location and tickets
  • Recipe – ingredients, cooking time, ratings
  • VideoObject – title, thumbnail, upload date and duration
  • JobPosting – for job listings in Google’s jobs experience
  • FAQPage – questions and answers

A note on FAQ and HowTo: since 2023, Google shows FAQ rich results mainly for well-known, authoritative government and health websites, and it has stopped showing HowTo rich results. The markup is still valid and can help machines understand Q&A content, but most sites should not expect those rich results.

Rules to follow

  1. Mark up only what is visible on the page. Describing content users cannot see goes against Google’s guidelines.
  2. Be accurate. Prices, availability and ratings must match the page.
  3. No fake reviews. Self-serving review markup – a business marking up reviews of itself on its own site – is not eligible for review stars in Google.
  4. Use the most specific type that fits (Restaurant rather than just LocalBusiness).
  5. Include required and recommended properties for the rich result you are targeting.

Breaking these rules can lead to a manual action that removes rich results from your site.

How to add structured data

  • WordPress: SEO plugins (Yoast, Rank Math, All in One SEO) add Organization, Website, Article and Breadcrumb markup automatically; WooCommerce adds Product markup
  • Shopify: most themes include Product markup; apps can extend it
  • Custom sites: add JSON-LD to your page templates, generated from the same data that fills the page
  • Google Tag Manager can inject JSON-LD, but server-rendered markup is more reliable

How to test your markup

  1. Validate the syntax – a single missing comma makes the whole block invalid
  2. Check for missing recommended properties
  3. Use Google’s Rich Results Test to confirm eligibility for specific rich results
  4. Monitor Search Console’s enhancement reports for errors across the site
Structured Data Validator

Extract and check JSON-LD and microdata schema on a page, or paste code to test.

Open the Structured Data Validator

Combining several types with @graph

Pages often need several types. You can either use multiple script blocks or combine them in one @graph and link them with @id references – for example, an Article whose publisher is the Organization defined on the same page. Both approaches are valid.

A complete example for a local business

Here is homepage markup for a fictional café that combines several types in one @graph:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "CafeOrCoffeeShop",
      "@id": "https://beanandleaf.example/#business",
      "name": "Bean & Leaf Café",
      "url": "https://beanandleaf.example/",
      "image": "https://beanandleaf.example/images/cafe-front.jpg",
      "telephone": "+44 113 496 0000",
      "priceRange": "££",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "12 Market Street",
        "addressLocality": "Leeds",
        "postalCode": "LS1 6DT",
        "addressCountry": "GB"
      },
      "openingHours": ["Mo-Fr 07:30-17:00", "Sa 09:00-16:00"],
      "sameAs": ["https://www.instagram.com/beanandleaf"]
    },
    {
      "@type": "WebSite",
      "@id": "https://beanandleaf.example/#website",
      "name": "Bean & Leaf Café",
      "url": "https://beanandleaf.example/",
      "publisher": { "@id": "https://beanandleaf.example/#business" }
    }
  ]
}

The @id values let the WebSite refer to the business without repeating its details. Every fact in the markup – address, phone, hours – must match what visitors see on the page and on your Google Business Profile.

Structured data for products in detail

Product pages are where structured data most often produces visible results. A solid Product block includes:

  • name, image (several images if possible) and description
  • brand, sku and, where available, a global identifier such as gtin
  • offers with price, priceCurrency, availability and the product url
  • aggregateRating and review – only for genuine reviews from customers, shown on the page
  • Shipping details and return policy information, which feed Google’s merchant listing features

Keep prices in sync. If the markup says £49 and the page says £59, Google may ignore the markup or flag it in Search Console.

Structured data and AI systems

Search engines and AI systems increasingly think in terms of entities – people, organisations, products, places – and the relationships between them. Structured data is one of the clearest ways to state those facts: who published this article, which organisation sells this product, where this business is located. Consistent entity information across your site, structured data, social profiles and business listings makes it easier for any machine to describe your business correctly.

Maintaining structured data over time

Markup breaks quietly when templates change. Build a few habits:

  1. Generate JSON-LD from the same data that renders the page, so they cannot drift apart
  2. Validate markup after any template or theme update
  3. Check Search Console’s enhancement reports monthly for new errors or warnings
  4. Review schema.org and Google’s documentation once a year for new properties and deprecated features

Key takeaways

  • Structured data labels your content with the schema.org vocabulary so machines understand it precisely.
  • Use JSON-LD, Google’s recommended format.
  • Most sites need Organization or LocalBusiness, WebSite, BreadcrumbList and Article or Product markup.
  • Mark up only information that is visible on the page, and keep it accurate.
  • Valid markup makes pages eligible for rich results but does not guarantee them.
  • Validate markup after template changes and watch Search Console’s enhancement reports.

Frequently asked questions

Does schema markup improve rankings?

Not directly. It helps search engines understand your content and can earn rich results, which often increase click-through rate.

Why is my valid schema not producing rich results?

Valid markup makes a page eligible but does not guarantee rich results. Google also considers content quality, policy compliance and whether a rich result suits the query.

Can I use more than one schema type on a page?

Yes. A product page might use Product, BreadcrumbList and Organization together.

Should I use Microdata or JSON-LD?

JSON-LD. It is Google’s recommended format and the easiest to maintain.

schemastructured datajson-ldrich results

Check your own site

Run a free audit with 55+ checks and get a fix for every issue.

Run free audit

Keep reading