If you've talked to an SEO recently, you've probably heard the word "schema." Maybe it came up in an audit report. Maybe someone told you your site needed it. Maybe a plugin kept asking you to configure it and you kept clicking past the prompt.
This guide is for people who want to actually understand what schema markup is, why it matters, and what happens when it's wrong — before doing anything about it.
What schema markup actually is
Your website has two audiences: the people who visit it and the search engines that index it.
People read your page and understand it through context. They see "Monday–Friday, 9am–5pm" and know those are your business hours. They see a block of questions and answers and recognize it as an FAQ. They see a star rating and understand someone reviewed your product.
Search engines are getting better at this — but they're not there yet. Google can read your page, but reading isn't the same as understanding. Schema markup bridges that gap.
Schema is code that lives in your website's source (invisible to visitors) and labels your content in a structured format Google actually processes. Instead of Google inferring that "Monday–Friday, 9am–5pm" might be your hours, schema tells Google directly: this is the opening hours for this business. Instead of Google guessing that your star rating is a review score, schema says: this is a ReviewAggregate with a rating of 4.7 out of 5 based on 143 reviews.
The format most commonly used is called JSON-LD — a block of structured data that looks like this:
// abbreviated for illustration — full LocalBusiness schema also requires "address"
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Acme Plumbing",
"telephone": "(555) 867-5309",
"openingHours": "Mo-Fr 09:00-17:00"
}
You don't need to understand the syntax to use it. What matters is understanding what it does: it gives Google a formal introduction to your content instead of making Google guess.
Why it shows up in search results
You've seen rich results even if you didn't know what they were called.
They're the search listings that look different from the standard blue-link-plus-snippet format. Star ratings under a business name. A dropdown of FAQ questions right in the search results. Article thumbnails with author names and publish dates. Business hours and phone numbers without clicking through to the site.
None of that happens by default. All of it comes from schema.
Here's what maps to what:
- Star ratings in search → ReviewAggregate schema on a page with reviews
- FAQ dropdowns → FAQPage schema with properly structured questions and answers
- Business hours and phone in local results → LocalBusiness schema
- Article bylines and publish dates → Article schema with author and datePublished properties
- Sitelinks search box → WebSite schema with a SearchAction property
The important thing to understand: there's no opt-in button for rich results. You can't ask Google to show your star rating. The only way in is having the right schema implemented correctly. The code is the opt-in.
Why it matters for AI search
Google's traditional search results aren't the only place people find information anymore. Google's AI Overviews, ChatGPT, Perplexity, and a growing list of AI-powered tools are surfacing answers directly — often without users clicking through to the source at all.
How do these tools decide what to cite?
Structured data is a significant part of the answer. When an AI tool is deciding which sources to pull from for a given query, schema markup helps signal: this page knows what it is. A page with proper Article schema, a named author, a publication date, and a clear topic declaration is easier for an AI to evaluate and cite than a page with the same content and no structured signals at all.
This is sometimes called GEO — generative engine optimization. Structured data is one of the few things you can add to a page right now that directly influences how AI tools process and surface your content. It's worth having in place before the landscape shakes out further.
What happens when schema is wrong
This is the section most schema guides skip. It's the most useful one.
Schema fails silently. There's no error message on your site. Your analytics don't change. Search Console doesn't send you an alert by default. The rich result just doesn't appear — or appears briefly and then disappears — and you have no obvious way to know why.
Here are the four failure patterns that cause this:
Wrong schema type. Using generic Organization schema on a local business page when you should be using LocalBusiness — or the even more specific subtype like Plumber or Dentist. Google's rich result eligibility requirements care about the specific type, not just the general category.
Missing required properties. Every schema type has required properties — the fields that have to be present for the schema to be valid. LocalBusiness schema without an address. Article schema without an author. FAQPage schema where the answers are missing. The validator may still pass these in some tools, but Google won't surface the rich result.
Syntax errors. Valid-looking JSON-LD that has a structural problem — a missing closing bracket, a property name with a typo, an image URL that's relative instead of absolute. These break the entire schema block, not just the affected property.
Conflicting implementations. The most common problem on established sites. A WordPress theme generates one set of schema. An SEO plugin generates another. A developer added a third block manually two years ago. All three are technically present. All three say different things. Google doesn't know which to trust, so it ignores the conflict and surfaces nothing.
If you've ever wondered why your site "has schema" but isn't getting rich results — it's almost always one of these four things.
Schema fails silently. The rich result just doesn't appear — and you have no obvious way to know why.
Find out what's wrong with your schema in 30 seconds.
Paste any URL into the free 0-Tech Schema audit. It flags missing properties, wrong types, and conflicts — and generates the fix.
The schema types most sites need
There are hundreds of schema types on schema.org. Most sites need four.
LocalBusiness. For any business with a physical location or a defined service area. This is the one that feeds the local pack, Google Maps, and local rich results. If you're a service business and you're not showing up where you expect in local search, missing or broken LocalBusiness schema is one of the first things to check. (For a deeper local-business walkthrough, see schema markup for local business.)
Article. For blog posts, news content, and editorial articles. Article schema signals to Google that a page is original written content — and when paired with a named author and publication date, it's one of the factors that supports E-E-A-T signals. Without it, your content is less legible to both search engines and AI tools.
FAQPage. For any page that has question-and-answer content. FAQ schema is one of the more accessible rich result types — if implemented correctly, your questions can expand directly in search results, taking up significantly more real estate than a standard listing. Worth having on service pages, pricing pages, and support content.
BreadcrumbList. Sitewide. Breadcrumb schema tells Google about your site's hierarchy — how pages relate to each other structurally. It feeds the breadcrumb display in search results and supports sitelinks. It's not glamorous, but it's table stakes for any site with more than a handful of pages.
How to check what's missing on your site
Two options, honest about both.
Manual check: Google's Rich Results Test lets you paste a URL and see what schema Google finds on that page. It's useful for confirming what's present — but it doesn't tell you what's missing. If your LocalBusiness schema doesn't exist, the tool won't flag it. You have to know to look for it. Pair it with the Schema.org validator for syntax checking.
Faster option: Paste your URL into 0-Tech Schema — it audits what's present, flags what's missing for your page type, and generates the exact JSON-LD code to fix it. Built for site owners, not developers. Free to use.
FAQ
Does schema markup directly affect rankings?
Not directly — Google has confirmed schema isn't a ranking factor in the traditional sense. But rich results (which come from schema) demonstrably affect click-through rates, and click-through rate influences how your pages perform over time. The indirect effect is real and measurable.
What's the difference between schema markup and structured data?
They're the same thing, used interchangeably. "Structured data" is the broader concept — data formatted so machines can read it. "Schema markup" refers specifically to structured data that uses the schema.org vocabulary. JSON-LD is the format Google recommends for implementing it.
Do I need a developer to add schema?
For most page types, no. JSON-LD is a self-contained block of code that gets added to your page's <head> — it doesn't interact with your existing code. Most website platforms have a way to add it without touching anything structural. The harder part is knowing what to write, which is what the audit tool is for.
Does schema cost anything? What about plugins?
Schema itself is free — it's just code in your page's source. The cost is in implementation. WordPress users can use plugins like Yoast, Rank Math, or Schema Pro (free and paid tiers). Shopify and Squarespace generate basic schema automatically. Custom-built sites usually need a developer or a tool that generates the JSON-LD for you. The trap with plugins is that they often produce generic schema that misses required properties or conflicts with other schema sources on the same page — which is one of the four failure patterns above.
How do I know if my schema is working?
Run your URL through the Rich Results Test. If the schema is valid, it'll show you what Google found and whether the page is eligible for rich results. For a broader picture, check the Enhancements section in Google Search Console — it surfaces validation errors and warnings for schema across your whole site.
What is JSON-LD?
JSON-LD stands for JavaScript Object Notation for Linked Data. It's a way of formatting structured data that Google recommends because it's easy to add without modifying your existing HTML. It lives inside a <script type="application/ld+json"> tag — separate from your page content, low risk to implement.
Schema isn't magic and it isn't optional. It's the infrastructure that makes your content legible to search engines and AI tools — the difference between Google guessing what your page is and Google knowing.
