What is Schema markup?JSON-LD
Schema markup is structured metadata embedded in a web page using JSON-LD that tells search engines and AI answer engines what entities, facts, and relationships the page describes.
Schema markup follows the Schema.org vocabulary and is delivered via a JSON-LD `<script>` block in the page head or body. It does not change visible content; it gives crawlers a machine-readable description of it. Key types include Organization, WebSite, WebPage, Article, FAQPage, Service, BreadcrumbList, Person, Product, Review, HowTo, DefinedTerm, and Speakable. Properly wired schema enables rich results in Google search, drives AI citation rates in AEO surfaces, and feeds entity recognition that compounds into GEO. The Google Rich Results Test and Schema.org Validator are the two tools every implementation runs through before deploy.
What it includes
- Organization + WebSite at the site root (in layout)
- BreadcrumbList on every nested page
- Article + Speakable on long-form content
- FAQPage on pages with question/answer blocks
- Service + Offer on commercial pages
- Person on bylines and About-page founder profiles
How it works
Map page types to schema
Use a schema-by-page-type matrix. Service pages get Service + BreadcrumbList + FAQPage. Articles get Article + Speakable. Glossary terms get DefinedTerm.
Implement via JSON-LD
Embed the schema as a single `<script type="application/ld+json">` block per page, or use the @graph pattern when entities cross-reference.
Validate every page
Run Google Rich Results Test and Schema.org Validator on each unique page type. Fix every warning before merging.
Monitor in Search Console
Watch Enhancements reports for FAQ, HowTo, Breadcrumb, Review, and Product. Coverage data appears 2–4 weeks after indexation.
Frequently asked
Does schema markup affect rankings directly?
Not as a ranking signal in the classical sense. Schema affects rich result eligibility, click-through rate, and AI citation probability — all of which compound into commercial outcomes.
Should I use @graph or separate JSON-LD blocks?
Separate blocks are easier to maintain. Use @graph when entities reference each other across types (e.g., a Service whose provider is the Organization). AI parsers prefer @graph; humans prefer separate blocks.
What happens if my schema is wrong?
Google ignores invalid schema silently — no penalty, just no rich result. Bad schema in AEO surfaces can produce miscitations, which are harder to fix.