On this page
What a person sees and a machine has to guess
With schema markup Google no longer has to guess what your page holds. A person sees at once that "Utrecht" on your contact page is your city and "07:30" your opening time. A search engine has to guess. With schema markup you spell it out in a fixed form: this is a plumber, this is the address, these are the hours. The code is also called structured data.
It is part of technical SEO: it changes nothing for the reader, but it changes how sure Google and AI assistants are about what they read.
Google, Bing and Yahoo in 2011
On 2 June 2011, Google, Bing and Yahoo jointly announced schema.org: one vocabulary all three would read, so site builders no longer had to write something different for each search engine. Yandex soon joined. Google had shown rich snippets, such as review stars, since 2009, but in its own formats. Today schema.org holds hundreds of types, from Organization and Product to Plumber and Recipe, maintained by an open community.
A block of JSON-LD in the code
You put a block of code in the page, usually as JSON-LD: a piece of JavaScript notation kept apart from your text. Google recommends that form, though it also reads Microdata and RDFa. The block holds a type ("@type": "Plumber") with properties (name, address, phone, hours). Google reads it while crawling, checks it against what is visible on the page, and may use it for a richer result or for what it knows about your company. The page has to be indexed first: markup on a page set to noindex or missing from your sitemap does nothing.
Code for a local business, line by line
In the <head> of the homepage, invisible to visitors
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Van Damme Plumbing",
"telephone": "+32 9 000 00 00",
"address": { "@type": "PostalAddress",
"addressLocality": "Utrecht", "postalCode": "3511" },
"openingHours": "Mo-Fr 07:30-17:00",
"areaServed": ["Utrecht", "Zeist", "Nieuwegein"]
}
</script>
- The vocabularyStates which vocabulary the code uses: schema.org's.
- What it isA type from the list: Plumber is a kind of LocalBusiness. Pick the most precise type that exists.
- Where it isThe address as a structured block, identical to your Google Business Profile and contact page.
- When it is openOpening hours in a fixed notation a machine reads without doubt.
- Who it servesThe towns you cover. Only what is also visible on your site.
A made-up example. What the code says must also be on the page: Google ignores or penalises markup that says something else.
Five types that matter for a small company
| Type | For whom | What it can return | Still visible in Google? |
|---|---|---|---|
| Organization or LocalBusiness | Every company, on the homepage or contact page | Correct name, logo, address and hours in Google and in AI answers | Yes, in the knowledge panel and local results |
| Product with Offer | Online stores | Price, stock and reviews next to the result | Yes, with the required fields |
| Article | Guides and news | Date and author, better read by AI search | Partly |
| BreadcrumbList | Sites with more than one level | The path instead of a long URL | Yes |
| FAQPage | Pages with questions | Since August 2023 only for well-known government and health sites | For most companies, no |
| Event | Anyone running events | Date and place next to the result | Yes |
Structured data guarantees nothing: Google itself says markup makes a richer result possible, not certain. Large sites do measure the difference. In Google's own case studies, Rotten Tomatoes got 25 percent more clicks on pages with structured data, and Nestle 82 percent more on pages shown as rich results.
One site, several languages
Give every language version its own markup in its own language, with the same organization behind it. The name and address stay identical; descriptions, product names and article titles follow the page. Combined with hreflang, that tells search engines these are versions of one business, not rival sites. We build multilingual websites that way.
Checked in fifteen minutes
- Test a page in Google's Rich Results Test and fix every error on a required property.
- Check that name, address and phone in the code match your contact page and Google Business Profile word for word.
- Pick the most precise type: Plumber, Dentist or AccountingService says more than LocalBusiness.
- Only put in the code what is visible on the page; no invented reviews or prices.
- Open the Enhancements report in Search Console and see whether Google reads your markup as valid.
Schema markup works together with the rest of your technical base: a sound title tag and meta description decide what the result says, the code says what it is.
An hour of work, and what Google does with it
On a small site, schema markup is a few hours of work: a block on the homepage, one per product or article, and a test. WordPress plugins do part of it, often with types that are too general. On a custom site you write it once in the template and it is right on every page. What it returns: stronger results where Google still shows them, a correct business profile, and a site AI assistants understand better, which counts for GEO and for being found in ChatGPT.
About rich results, plugins and AI
What is the difference between schema.org, schema markup and structured data?
Schema.org is the vocabulary, the set of types and properties. Schema markup is the code that uses it. Structured data is the general name for data in a fixed, machine-readable form. In practice people mean the same thing by all three.
Does schema markup help me rank higher?
Not directly. Google does not say markup lifts your position. It helps Google understand the page and makes richer results possible, which get clicked more often.
Is FAQ markup still worth it?
For rich results in Google hardly: since August 2023 they appear only for well-known government and health sites. The markup does no harm, and other search engines and AI assistants still read it.
Which format should I use, JSON-LD or Microdata?
JSON-LD. Google recommends it, and it stays apart from your HTML, so a design change does not break it.
