Technical Guide: Schema MarkupUpdated October 28, 2026

What Is Schema Markup?
A Plain-English Guide for Site Owners

Schema markup is a machine-readable label for what a page contains, usually written as JSON-LD. It can make a page eligible for specific search features, but valid code never guarantees a special result.

Dark editorial illustration of a webpage labeled with JSON-LD, article details, ratings, and business hours

Schema markup is code that tells search engines exactly what a page contains: a business, an article, a product, an event. It uses the shared Schema.org vocabulary, usually written as JSON-LD in a script block, and it describes content that is already visible on the page. Its job is to make that content easier for machines to read and, for some types, to make the page eligible for enhanced results in Google.

  • What it is: structured data written with the Schema.org vocabulary, most often as JSON-LD.
  • What it can do: make a page eligible for specific Google features such as article details, breadcrumbs, a logo, product snippets, or event listings.
  • What it does not do: guarantee a special result, or work as a general ranking boost.
  • What decides whether it works: valid code, a type Google supports, and facts that match the visible page.

When I check a page, I compare the visible copy with the JSON-LD in the source, then read Google's documentation for the feature the page is trying to earn. Quiet failures usually show up where those sources disagree.

What schema markup is

Four terms get used as if they were one thing, so here is how they fit together.

TermWhat it means
Structured dataAny information formatted so a machine can read it without guessing. The broad concept.
Schema.orgThe shared vocabulary of types (such as Article or LocalBusiness) and properties (such as name or telephone). Google, Microsoft, Yahoo and Yandex created it.
Schema markupStructured data written with the Schema.org vocabulary.
JSON-LDA format for writing that markup. It sits in a script block instead of being woven through your visible HTML.

Google supports three formats for search features: JSON-LD, Microdata, and RDFa. It recommends JSON-LD because it is the easiest to implement and maintain at scale, and it can be generated by a CMS or injected with JavaScript.

A small JSON-LD block can identify a business name, telephone number, and opening hours like this:

// abbreviated for illustration; Google LocalBusiness rich-result eligibility also requires "address"
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Acme Plumbing",
  "telephone": "(555) 867-5309",
  "openingHours": "Mo-Fr 09:00-17:00"
}

This block is valid JSON-LD and uses Schema.org terms. That does not automatically make it eligible for a Google LocalBusiness result. Google applies its own feature-specific requirements on top of the broader vocabulary.

How to read a JSON-LD block

Every block follows the same pattern, so once you can read one you can read most of them:

  • @context says which vocabulary the terms come from. For Schema.org it is always https://schema.org.
  • @type names what the thing is. This is the most important line, because it decides which properties apply.
  • Everything else is a property of that type: name, telephone, author, datePublished. A property can hold plain text or another nested object with its own @type.

Here is a second example, for a blog post. The values are placeholders:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How We Fixed Our Crawl Errors",
  "author": {
    "@type": "Person",
    "name": "Jane Doe",
    "url": "https://example.com/about/"
  },
  "datePublished": "2026-03-04",
  "dateModified": "2026-09-18",
  "image": "https://example.com/images/crawl-errors.jpg"
}

Google's Article documentation lists no required properties. It recommends an author with a name and URL, both dates in ISO 8601 format, a headline, and an image. Every value in that block should also be findable on the page itself: the title, the byline, the dates, the picture.

Search engines are good at reading pages, but reading is not the same as knowing. A string like "Monday to Friday, 9 to 5" might be opening hours, an event schedule, or a line from a blog post. Schema removes the guess by saying what each piece is.

Google uses that information to understand the page and, for supported types, to show it in a richer way. That can mean a breadcrumb trail instead of a raw URL, a logo beside a brand, price and availability under a product, or date and image details on an article. None of it is switched on by a setting. The markup is how a page becomes eligible.

On click-through, Google's own structured data introduction links to site-reported case studies, including one reporting a 25% higher click-through rate on pages with structured data. Those are single-site results, not a forecast for your pages. The honest version is that a richer listing can earn more clicks when it appears, and whether it appears is up to Google.

Which schema types matter, and what Google does with them

Schema.org has hundreds of types. Most sites need a handful, and which ones depend on what the page is. Google's search gallery is the authoritative list of types that can change how a result looks, so check it before building anything.

TypeUse it onWhat Google does with it
Article (or BlogPosting, NewsArticle)Editorial pagesCan influence title text, images, and date information in results. No required properties; author, dates, headline and image are recommended.
BreadcrumbListAny page that sits below the home pageCan show the page's path in the result.
OrganizationHome page or About pageHelps Google choose a logo and informs knowledge panel details. No required properties. Logo images need to be at least 112 by 112 pixels.
PersonAuthor and About pagesIdentifies the author an Article points to. On its own it has no dedicated rich result.
ProductProduct pagesProduct snippets need a name plus one of review, aggregateRating, or offers. Pages where shoppers can buy fall under merchant listings instead.
LocalBusinessA real business locationNeeds a physical address. See the note below the table.
Event, Recipe, VideoObject, JobPostingPages that are that thingEach has its own required properties in Google's documentation. Read the page for that feature first.

FAQPage and HowTo are no longer worth building for Google. Google stopped showing FAQ rich results on May 7, 2026, and had already cut back HowTo rich results in 2023. Older guides, including earlier versions of this one, still promise FAQ dropdowns in search. A visible FAQ section still helps readers, and the markup is still valid Schema.org, but do not expect it to change your listing. The sitelinks search box is gone too.

LocalBusiness is for a real business location. Google's LocalBusiness rich-result documentation requires a physical address. Serving a city does not create an office there. A service-area page should describe the service and put the covered place in Service.areaServed instead of inventing a local address or a new LocalBusiness entity. The local-business guide covers that decision in detail.

Eligibility is not a guarantee, and it is not a ranking boost

Correct structured data can make a page eligible for a supported search feature. Google still decides whether to show that feature for a particular query, device, location, and user. A passing Rich Results Test is evidence that Google can read an eligible item, not a promise that the result will look different.

Feature support is specific. Recipe markup has different rules from Product, Event, Article, or LocalBusiness markup. A type that exists on Schema.org may have no dedicated Google search feature at all.

Valid Schema.org markup and Google rich-result eligibility are two different checks. Passing one does not prove the other.

On rankings, Google's structured data documentation makes no claim that markup improves them. Structured data helps Google understand a page and can change how a supported result appears. Any effect on clicks comes through the listing, not through a ranking signal. I treat schema as a correctness and eligibility job, not a ranking lever, and I would be wary of anyone selling it as one.

Does AI use schema markup?

It depends on the system, and the public evidence is thinner than most schema guides admit.

  • Google: its AI features guidance says there is no special Schema.org markup you need for AI Overviews or AI Mode, and no extra machine-readable files. It does list keeping your structured data matched to the visible text as a worthwhile practice.
  • Microsoft Bing and Copilot: Search Engine Land reported that Bing's Fabrice Canel confirmed at SMX Munich that Microsoft uses schema markup to help its large language models understand content.
  • Other AI tools: I have not found published documentation from the other major providers saying whether or how they read schema. Treat any promise of guaranteed AI citations from schema as unproven.

"AI schema markup" is not a separate kind of markup. It is the same Schema.org JSON-LD. The practical move is the unglamorous one: describe who you are and what each page is, keep the facts consistent across your site and profiles, and make sure the visible text says the same thing. A machine that reads either layer should reach the same answer. For a field test of what AI tools actually pick up, see the AI search visibility audit.

How to add schema markup to a page

  1. Decide what the page is. One main entity per page: an article, a product, a service, a business. Then check whether Google's gallery lists a feature for it.
  2. Write or generate the JSON-LD. Many CMS platforms and SEO plugins, such as Yoast or Rank Math, emit some types for you. Custom templates can output it from page data. A generator can draft it. Use the real values from your page, never placeholders.
  3. Put it on the page it describes. Place it in a <script type="application/ld+json"> block. Google can read JSON-LD that a CMS or JavaScript adds, but then test the rendered page, not only the template.
  4. Test before publishing. Paste the code or the URL into the Rich Results Test and fix errors. Warnings on optional properties are not failures.
  5. Check after publishing. Run URL Inspection on the live page, then watch the Search Console rich result reports for problems that appear later, such as a template change that breaks the block.

Before you add anything, find out what the site already emits. Themes, plugins, and apps often output schema without telling you, and adding a hand-written block on top is how conflicts start.

How to check if your website has schema markup

  1. View the source. Open the page, view the page source, and search for ld+json. If it is there, you have JSON-LD. If the markup is added by JavaScript, it will not appear in plain source, so use the next steps.
  2. Rich Results Test. Google's Rich Results Test loads the page and lists the items Google detects for supported features, with errors and warnings.
  3. Schema.org validator. The Schema.org validator checks the markup against the full vocabulary, including types Google has no feature for. It does not know Google's rules.
  4. URL Inspection. In Search Console, inspecting a live URL confirms whether Google found the structured data.
  5. Search Console reports. The rich result status reports show samples of supported items Google found across indexed pages. They help diagnose validity problems. They do not prove Google displayed a rich result.

None of these tools can tell you what is missing. A page with no LocalBusiness block will pass every test, because there is nothing to fail. Someone has to decide which entities the page ought to describe, and that starts with reading the visible page. You can also inspect a page with 0-Tech Schema for a plain-English inventory and suggested JSON-LD. Review every suggestion against the visible page and the current Google documentation before publishing it.

Why schema can fail quietly

The visible page can look normal while its structured data is incomplete, misleading, or irrelevant to the feature you expected. There is no error on the page and your analytics do not move. These are the failures I look for first.

Parseability. The script must be valid JSON-LD. A missing comma, quote, or closing brace can prevent the block from being parsed.

Visible-content match. Structured data must describe content a reader can actually find on the page. Hidden claims, ratings, or questions can violate Google's guidelines even when the code parses. A spammy markup issue can lead to a manual action that removes rich result eligibility.

Correct type and properties. Use the type that describes the real page and entity. Then check Google's documentation for that supported feature. Schema.org may allow a property that Google ignores, and Google may require a property that Schema.org treats as optional.

Consistent facts. A theme, plugin, app, and hand-written block can all emit structured data. Multiple blocks are not inherently wrong, but conflicting names, URLs, addresses, or entity identities create a factual problem that needs to be resolved. Picture a theme that outputs the company as "Acme Plumbing LLC", a plugin that outputs "Acme Plumbing", and an old hand-coded block with last year's phone number. Three blocks, three versions of the same business.

Access. Google's guidelines say not to block pages that carry structured data with robots.txt or noindex. A page Google cannot crawl or index cannot earn the feature.

Stale facts. Markup copied once and never updated drifts away from the page. Hours, prices, dates, and availability change, and Google expects time-sensitive information to stay current.

Pre-publish checklist

  • Does every fact in the JSON-LD appear on the visible page, and is it current?
  • Is the @type the most specific one that honestly describes the page?
  • Does Google's documentation for that feature list required properties, and are they all present?
  • Does the block parse? Run it through the Rich Results Test or the Schema.org validator.
  • Do names, URLs, phone numbers, and addresses match every other source on the page, including plugins and theme output?
  • Is the page crawlable and indexable, with no robots.txt block or noindex tag?
  • Are images in the markup real, crawlable, and relevant to the page?
  • Are you marking up reviews only where policy allows? Google treats a business's own ratings on its LocalBusiness or Organization entity as self-serving.

What to do next, by situation

Your situationNext step
No schema at allStart with Organization on the home page, Article on posts, and BreadcrumbList across the site. Add feature types only where the page really is that thing.
A plugin or theme already outputs schemaLook at what it emits before adding anything. Fix or switch off duplicates instead of stacking a third source.
The Rich Results Test shows errorsAdd the missing required properties or fix the syntax, then retest. Errors block eligibility. Warnings usually do not.
Everything is valid but no rich result appearsThat is normal. Confirm the feature still exists in Google's gallery, the page is indexed, and the content matches the markup. Google decides per query.
You have FAQPage or HowTo markupIt will not produce a Google rich result. Keep a visible FAQ if readers use it. Do not spend time debugging the markup for Google.
You serve an area but have no officeDo not invent an address. Describe the service and use areaServed. See the local-business guide.
Search Console reports a manual action for structured dataRemove the misleading or hidden markup, fix the page, and request a review.

FAQ

What is a schema markup example?
A schema, in this sense, is a block of JSON-LD that labels a page. The Article example above is one: it states the page is an Article and names its headline, author, dates, and image. The LocalBusiness example is another, labeling a business name, telephone number, and opening hours. Each uses Schema.org terms, and each should describe facts a visitor can see on the page.

Why is schema markup important for SEO?
It helps Google understand what a page is, and for supported types it can make the page eligible for richer search results, such as breadcrumbs, a logo, or product details. It is not a general ranking factor. Its value is accuracy and eligibility, and any extra clicks come from how the listing looks when Google chooses to show it.

Does schema markup directly affect rankings?
Google does not describe structured data as a general ranking boost. It helps Google understand eligible page features and can change how a supported result appears. Correct markup still does not guarantee that feature will be shown.

What is AI schema markup?
There is no separate AI version. It is the same Schema.org JSON-LD, used with the hope that AI systems read it. Google says no special markup is needed for AI Overviews or AI Mode, and Microsoft has said it uses schema to help its language models. Clear, accurate Organization, Person, and Article markup that matches the visible page is the sensible approach.

Does AI use schema markup?
Some do. Microsoft's Bing has said it uses schema markup to help its language models understand content. Google says AI Overviews and AI Mode need no special markup, though it recommends structured data that matches visible text. For other AI tools I have found no published documentation, so any claim that schema guarantees citations is unproven.

How do I check if my website has schema markup?
View the page source and search for ld+json, then run the URL through Google's Rich Results Test and the Schema.org validator. In Search Console, URL Inspection and the rich result reports show what Google found. Remember that these tools cannot tell you what is missing.

What's the difference between schema markup and structured data?
Structured data is the broader concept: information formatted for machines. Schema markup is structured data that uses the Schema.org vocabulary. JSON-LD is one format Google supports and generally recommends.

Do I need a developer to add schema?
Some platforms provide fields or plugins for common types. Custom templates, multiple entities, or conflicting implementations may need a developer. The hard part is not pasting JSON-LD. It is describing the right thing with current, visible facts.

Does schema cost anything? What about plugins?
The vocabulary and JSON-LD format are free. Implementation may be built into a platform, supplied by a plugin, or added in a custom template. Check what the site already emits before adding another source.

How do I know if my schema is working?
Check that the JSON-LD parses, matches the visible page, uses the right entity, and meets Google's rules for the intended feature. The Rich Results Test and URL Inspection help with Google-supported features. Search Console reports are sampled and do not confirm display.

What is JSON-LD?
JSON-LD stands for JavaScript Object Notation for Linked Data. On a web page, it usually lives inside a <script type="application/ld+json"> element. Its facts still need to match the content people can read.

Sources

Audit your site's schema with 0-Tech Schema →

Let's build something useful.

Whether you need a new site, a site rescue, custom functionality, or a technical SEO cleanup, I would love to hear what you are working on.

Send a message

Free: The 10-Minute Local SEO Self-Check