Resources

Schema Markup: A Practical Guide

Structured data is machine-readable context about your page, written in JSON-LD. It is not a ranking boost — it is a rich-result and machine-comprehension layer, and mismatched markup is worse than none at all.

What is schema markup and what does it actually do?

Schema markup is code embedded in a page that describes its content in a structured, machine-readable form — what the page is about, who publishes it, what it costs, how it is rated. Search engines read it to build rich results: enhanced listings with price and rating, FAQ accordions, breadcrumbs, knowledge panels.

It is worth being precise about what it is not. Structured data is not a ranking factor. Google has said so, and adding it does not make a page rank higher on its own. What it does is make your page eligible for enhanced presentation in results, which increases click-through, and it improves how machines including language models understand the page.

Should I use JSON-LD, microdata or RDFa?

JSON-LD, and it is not a close call. It is a single block placed in the page head or body, separated from the HTML, so it does not interfere with markup or rendering and is trivially easy to deploy and update.

JSON-LD is the only sensible choice for new work.
FormatStatusRecommendation
JSON-LDGoogle's recommended formatUse this
MicrodataStill supportedAvoid — harder to maintain, breaks on template changes
RDFaLegacyAvoid

Put one JSON-LD block per entity in a script tag with type application/ld+json. Multiple entities can go in one block using @graph, which is how this site is structured.

Which schema types matter most?

There are hundreds of types. These are the ones that change how a page is presented or understood, and they are the ones to prioritize.

The types that matter, and an honest note on which rich results Google has actually restricted.
TypeWhat it doesRich result?Priority
OrganizationIdentifies the business, with logo and social profilesKnowledge panel eligibilityEssential, site-wide
WebSiteIdentifies the site and its search actionSitelinks search box (largely deprecated)Low value but harmless
ArticleIdentifies content as an article with author and datesArticle presentation in some surfacesHigh for publishers
FAQPageMarks up question-and-answer pairsFAQ accordion, though Google restricted these to authoritative health and government sites in 2023Medium — still useful for machine comprehension
ProductPrice, availability, rating, conditionPrice and rating in results, Shopping surfacesEssential for ecommerce
LocalBusinessAddress, hours, geo, contactLocal pack and knowledge panelEssential for local businesses
ServiceWhat a business offersNo direct rich result, but improves machine comprehensionHigh for service businesses
BreadcrumbListThe page hierarchyBreadcrumb display in resultsEasy win, worth adding
HowToStep-by-step instructionsRestricted similarly to FAQLow
PersonAuthor or expert identityAuthor attribution in AI featuresHigh where authorship matters

Correct JSON-LD examples

Three examples covering the types most sites need. Note that each describes content that is actually visible on the page — that is a requirement, not a formality.

Organization — site-wide, in the head or footer

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "Example Ltd",
  "url": "https://example.com/",
  "logo": "https://example.com/assets/logo.png",
  "email": "hello@example.com",
  "sameAs": [
    "https://www.linkedin.com/company/example",
    "https://x.com/example"
  ]
}

The `sameAs` array is the part most sites omit and the part that matters most for entity clarity. It tells search engines and language models which other profiles belong to the same organization. Only list profiles you actually own.

Article — on a content page

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Appear in Google AI Overviews",
  "description": "What AI Overviews are and what actually raises citation rate.",
  "url": "https://example.com/ai-overviews-guide/",
  "datePublished": "2026-01-20",
  "dateModified": "2026-09-30",
  "author": { "@type": "Person", "name": "Jane Smith" },
  "publisher": { "@id": "https://example.com/#organization" },
  "inLanguage": "en"
}

FAQPage — matching visible content exactly

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do I need an llms.txt file?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Not for Google's AI Overviews. Google's official guidance states you do not need special machine-readable files."
      }
    }
  ]
}

Every question and answer in the markup must appear verbatim in the visible page content. Marking up FAQs that are not on the page violates Google's guidelines and can trigger a manual action.

How do I validate structured data?

Validate before deploying and monitor after. The Search Console report is the one that catches production problems.
ToolWhat it checksWhen to use
Google Rich Results TestEligibility for specific rich resultsBefore and after deploying; shows missing or invalid fields
Schema.org validatorVocabulary correctness against schema.orgWhen using an unfamiliar type or property
Search Console → EnhancementsLive monitoring of your deployed pagesOngoing — shows errors as they occur in production
Search Console URL InspectionPer-URL validation and live testChecking a single page

Validation tools check syntax and vocabulary, not truth. They will happily pass markup that describes content not actually on the page, so the semantic accuracy is your responsibility.

What are the common mistakes?

  1. Markup for content that is not on the page. The most serious error and the one most likely to trigger enforcement. Reviews, prices, FAQs — all must be visible.
  2. Stale prices and availability. Product markup showing a price from six months ago generates errors and suppresses the rich result entirely.
  3. Two conflicting types on one page. Marking a service page as both Product and Service confuses the parser. Pick the accurate one.
  4. Invented aggregate ratings. Marking up a rating that does not appear on the page, or that you generated, is a policy violation.
  5. Missing required properties. A Product without offers, or an Article without author and date, is invalid and ignored.
  6. SameAs pointing at profiles you do not own. This is an entity-claiming error and should never be done.
  7. Leaving it to degrade. A template change that drops the block silently removes structured data site-wide. Re-check after every redesign.

Frequently asked questions

Does schema markup improve my rankings?
No, not directly. Structured data is not a ranking factor. What it does is make your page eligible for enhanced results — price, rating, FAQ accordions — which take more visual space and earn more clicks at the same position. It also improves how machines including language models understand your page. Judge it on click-through, not rank.
Is JSON-LD better than microdata?
Yes, and it is not close. JSON-LD is a single block separate from the HTML, so it cannot be broken by template changes and does not interfere with rendering. Microdata is embedded in the markup itself and is correspondingly harder to maintain. Google recommends JSON-LD.
Will FAQ markup still get me the accordion?
Probably not. In 2023 Google restricted FAQ rich results to well-authorized government and health sites, so commercial sites no longer get the visual accordion. The markup is still worth implementing for machine comprehension and AI citation, but do not plan around the rich result.
Is it safe to add Organization sameAs for social profiles I do not own?
No. Claiming another organization's profiles in your markup is an entity-claiming error and should never be done — it can result in manual action. Only list profiles you actually control. The sameAs array is valuable precisely because it is accurate; a false entry undermines the clarity it is meant to create.
How often should I validate structured data?
Before deploying, and continuously afterwards through Search Console → Enhancements. The production report is the one that matters, because template changes, CMS updates and expired prices all break markup silently after it was correct at launch.
Do I need structured data on every page?
Not the same types. Organization should be site-wide. Article markup belongs on editorial content. Product markup only on product pages. FAQ only where FAQs are visible. BreadcrumbList on interior pages is cheap and worthwhile. Adding types that do not match the page type is worse than adding nothing.
Can I mark up reviews if I collect them elsewhere?
Only if the reviews are genuinely displayed on the page itself, or are clearly referenced there. Marking up reviews that are not visible to the user violates Google's guidelines. This also applies to aggregate ratings — they must reflect real reviews that a visitor can see.
My structured data was working and now it is not. What happened?
Usually one of four things: a template or CMS update dropped the block, a price or availability value became invalid, required properties were removed, or two conflicting types were introduced. Search Console → Enhancements names the specific error and the affected pages, which makes this straightforward to diagnose.

Keep reading

Technical SEO

The wider technical picture this belongs to.

Read more

AI Search Optimization

Why machine comprehension matters for AI answers.

Read more

The Complete SEO Audit Checklist

Phase 5 checks structured data.

Read more

Want this applied to your business?

Stop guessing what to prioritize. Get a straight answer on where your marketing is leaking money, and what to fix first.

Book a free 30-minute audit