SEO

Schema Markup and Rich Snippets: how to get them and improve organic CTR

· · Updated · 13 min read · 2,463 words
Google results with rich snippets, star ratings, FAQs and breadcrumbs on a dark background

Rich snippets turn your Google result from a plain line of text into a rich preview with stars, FAQs, prices or breadcrumbs. Here's how to implement schema markup correctly and measure its impact on CTR.

Schema markup — also known as structured data — is code you add to your web pages to help search engines understand the content more precisely. Google uses this information to generate rich snippets: enhanced SERP results that show review stars, expandable questions and answers, product prices, navigation breadcrumbs and much more. The effect on click-through rate can be substantial: according to several SEO studies, results with rich snippets achieve a 20% to 30% higher CTR than standard results in the same position. If you're in fifth place with an FAQ rich snippet and your competitor is fourth without markup, you could get more clicks than them. This guide shows you how to implement the most useful schema types with real code, how to test them and what to expect in terms of timing and results.

30+
rich result types documented by Google in its Search Gallery
27.6%
of clicks go to the first organic result on average: standing out in search results matters

Sources: Google Search Central, Search Gallery; Backlinko (2023)

What schema markup is and how it works technically

Schema markup is a standardised vocabulary of semantic tags defined by Schema.org, a collaboration between Google, Bing, Yahoo and Yandex launched in 2011. There are three formats for implementing it: JSON-LD, Microdata and RDFa. Google officially recommends JSON-LD because it sits in a <script> block separate from the body of the HTML document, making maintenance easier and deployment less risky. With JSON-LD you don't need to change the page's HTML structure — you can add and remove schema without touching the visible markup. Microdata and RDFa, on the other hand, require you to add attributes to existing HTML elements, which makes them more invasive and harder to manage. JSON-LD code is best placed in the page's <head>, but Google also reads it correctly when it's in the <body>.

When Googlebot indexes your page, it extracts the information from the JSON-LD code and uses it to build Google's internal Knowledge Graph. If the information in the code matches the visible content of the page and complies with Google's guidelines, the site becomes eligible to show the corresponding rich result. Important: eligible doesn't mean guaranteed. Google decides at its discretion when and whether to show rich snippets, based on factors such as query relevance, site authority and the space available in the SERP. Perfectly valid markup might not produce visible rich snippets for months, or it might appear within a week. Matching the markup to the visible content is essential: Google penalises sites that use structured data to describe content users can't see or to mislead users with false information.

The most useful types of schema markup for SEO

FAQPage — the most accessible for informational content

FAQPage schema is probably the easiest and most impactful type of rich snippet to get for content sites. When Google shows the FAQ rich snippet under your result, the preview can take up twice the vertical space of a normal result in the SERP, with two, three or even four expandable questions visible right in the results. Each expanded question shows the full answer without the user having to click through to the site — it seems like a disadvantage, but it actually builds trust and therefore CTR among people who are genuinely interested. Implementation is simple: you need a page with at least two question-answer pairs and the corresponding JSON-LD code. The FAQ content in the markup must match the FAQs visible on the page exactly (or almost exactly) — you can't put different questions in the code from the ones the user sees.

Example FAQPage JSON-LD code

<script type="application/ld+json">
{"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How much does a website cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The cost ranges from €500 for simple solutions to €15,000 for complex business websites."
}}]}
</script>

Product — essential for e-commerce

Product schema lets you show the product price, stock availability, average rating and number of reviews in the SERPs, directly under the organic result. For e-commerce, this is one of the most powerful types of markup: a result showing "4.8 stars (247 reviews) — €89.90 — In stock" immediately grabs attention and filters for users with high purchase intent. The required fields are name and at least one of description, image, brand or review. The fields that trigger rich results are offers (for price and availability) and aggregateRating (for the stars). Google requires reviews to be genuine and collected directly from users — you can't add fake reviews or ones you wrote yourself to the markup. Platforms such as WooCommerce and Shopify add Product schema automatically, but it's worth checking that they include all the necessary fields and that prices are updated in real time.

BreadcrumbList — better navigation in the SERPs

BreadcrumbList schema turns the URL shown in Google results from a generic string into a readable breadcrumb trail such as "Home > Blog > SEO > Schema Markup". It isn't an eye-catching rich snippet like stars or FAQs, but it significantly improves the readability of the result and helps users understand where they are on the site before clicking. Google often shows the breadcrumb instead of the raw URL, making the result look more professional and clearer. Implementation is simple: it's a list of objects, each with an id (the URL), a name (the text to display) and a numerical position. Interestingly, the breadcrumb in the markup can differ from the actual URL structure — you can show a more logical hierarchy even if your permalink structure is different.

Article and NewsArticle — for blogs and media

Article schema is the right type of markup for blog posts, guides and editorial content. It makes the page eligible for Google's Top Stories carousel and for previews in Google Discover. The main fields are headline (the title), author (with the author's name and profile URL), datePublished and dateModified (dates in ISO 8601 format), image (required for Top Stories, at least 1200px wide) and publisher (with the organisation's name and logo). The dateModified field is particularly important for SEO: updating it every time you substantially update the content signals to Google that the article is actively maintained, which can help rankings for queries where freshness is a factor.

How to test your markup: essential tools

Google's Rich Results Test is the official and most reliable tool: enter the page URL or paste the code directly, and it tells you whether the markup is valid, which rich results it can trigger and whether there are any errors or warnings. The interface also shows a preview of how the rich result might look, although this is only indicative. To use the Rich Results Test, go to search.google.com/test/rich-results. The second essential tool is the Schema Markup Validator at validator.schema.org: it's more permissive than the Rich Results Test because it validates against the full Schema.org standard, not just the types Google supports. It's useful for checking the syntax of your JSON-LD before it gets indexed. For monitoring after deployment, Google Search Console shows under "Search > Search results" the rich snippets your site is actually displaying, with impression and click data broken down by type.

JSON-LD (recommended)
  • Code kept separate from the visible HTML
  • Easy to add and remove
  • No risk of breaking the layout
  • Easy to generate dynamically with PHP/JS
  • Google's officially preferred format
Microdata / RDFa
  • Embedded in HTML elements
  • More invasive and harder to maintain
  • Risk of breaking the layout when editing
  • Still supported by Google but not recommended
  • Only useful in specific legacy contexts

Schema markup for local businesses: LocalBusiness

LocalBusiness schema is essential for any business with a physical location that wants to rank in local searches. It lets you specify the name, address, phone number, opening hours, geographic coordinates, service area and Google Business Profile URL. When implemented correctly and consistent with the information on Google Business Profile, it strengthens the local signal and can help visibility in the Local Pack (the map box that appears for local searches). The openingHoursSpecification field is particularly useful because it lets you set different hours for different days, including holidays. For professionals such as lawyers, doctors and consultants, there is also the ProfessionalService type, which extends LocalBusiness with fields specific to professions. Consistency between the markup, the website and the Google Business Profile is essential: discrepancies in the name, address or phone number (the so-called NAP citations) can confuse Google and reduce local visibility.

Common mistakes when implementing schema markup

Mistake #1 — Markup that doesn't match the visible content. Putting information in the JSON-LD code that differs from what the user sees on the page is an explicit violation of Google's guidelines and can lead to manual penalties. A typical example: adding an AggregateRating with a 4.8-star average when there are no visible reviews on the page, or using different prices in the markup from those shown on the product page. Google actively checks that markup and content match.
Mistake #2 — JSON-LD with syntax errors. A formatting error in the JSON (a missing comma, an unclosed bracket, an unescaped special character) makes the entire markup block invisible to Google. Always test the code in the Rich Results Test, or at least in an online JSON validator, before publishing it. The most common problem is apostrophes in text strings and quotation marks in text containing quotes.
Mistake #3 — Expecting rich snippets too quickly. Many webmasters implement schema and expect to see rich snippets in the SERP the next day. Google first has to index the updated page, then validate the markup, then decide whether to show the rich result. This process can take anywhere from 48 hours to several weeks. If after a month you still don't see rich snippets even though the markup is valid in the Rich Results Test, check Search Console for errors and make sure the page is correctly indexed.
Mistake #4 — Using the wrong schema for the type of content. Applying FAQPage schema to a page that isn't structured as an FAQ, or Article schema to a product page, not only fails to generate rich snippets but can confuse crawlers. Each schema type is designed for a specific kind of content — use the type that best matches the nature of the page, not the one that produces the flashiest rich snippets.

Schema markup and AI Overviews: how things will change

With the introduction of AI Overviews (the AI-generated answers that appear at the top of the SERPs for many queries), the role of schema markup is evolving. Early research suggests that sites with well-implemented structured data are cited more often in AI Overviews, probably because the markup helps the AI understand and extract key information more precisely. The Schema.org vocabulary keeps being updated with new types and properties — in 2024 properties were added for AI disclosure (indicating whether content is AI-generated) and for scientific data. For sites that publish content consistently, implementing robust, up-to-date schema markup is one of the few technical SEO factors where you can have a concrete, measurable impact in a relatively short time.

Implementation priorities: if you're starting from scratch, the recommended order is: (1) BreadcrumbList across the whole site, (2) Organization/LocalBusiness on the homepage, (3) Article on every blog post, (4) FAQPage on pages with FAQs, (5) Product on product pages. The first two are the simplest and provide a useful structural foundation for all the others.

Schema markup for professional services websites

Freelancers and consultants — lawyers, accountants, doctors, marketing consultants — have a range of specific schema types available that go well beyond the generic LocalBusiness. The LegalService type lets you specify areas of legal practice, while MedicalBusiness includes fields for specialisations, insurance agreements and hospital facilities. For a digital consultant or a marketing agency, the ProfessionalService type combined with Organization and WebSite forms the basis of complete professional markup. An often overlooked detail is Person schema: added to the author page or the about page, it tells Google who the professional is, with name, image, description, social profiles and website URL. This helps build E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) — the system Google uses to assess the credibility of sources. For anyone producing YMYL content (Your Money or Your Life — health, finance, law), having detailed Author schema with links to their LinkedIn profile, publications and credentials can make a significant difference to rankings.

A particularly useful and underused schema type is HowTo: if you have a step-by-step guide, HowTo markup lets Google show the steps directly in the SERP as a rich result, with the step name, image and description. Practical tutorials with numbered steps are ideal candidates. Likewise, VideoObject schema is essential if you publish videos: without it, Google can index the videos but won't show them as rich results in search. The key fields are name, description, thumbnailUrl, uploadDate and duration in ISO 8601 format (for example PT5M30S for a 5-minute-30-second video). Platforms such as YouTube automatically add VideoObject schema to videos published there, but if you host videos directly on your own site you have to add it manually.

How to monitor rich snippets in Google Search Console

Once you've implemented schema markup, Google Search Console becomes your main dashboard for tracking results. In the Search appearance section you'll find reports for each type of rich result Google has detected on your site: FAQs, reviews, products, breadcrumbs and others. For each type you see three key pieces of information: valid URLs (correct markup with no errors), URLs with warnings (markup present but with non-blocking issues) and URLs with errors (markup present but invalid). Clicking a specific type shows you which pages have problems and what kind of error Google reports — from a missing required field to out-of-range values. The key thing to understand is that a valid URL doesn't automatically mean it will show rich snippets: Google filters further based on site quality, page authority and query relevance. The report also shows impression and click data broken down by rich result type, letting you measure the direct impact of the markup on CTR. If 6–8 weeks after implementation you still see no impressions in the rich result reports, it's a sign that Google doesn't yet consider the site or page authoritative enough to show that type of rich result — the priority then becomes building domain authority through content marketing and link building.

Want to implement schema markup on your site?

Implementing structured data correctly requires knowledge of Google's guidelines and attention to technical detail. If you want your site to appear in rich results, take a look at the SEO service or contact me for an analysis of your existing markup and an implementation plan.

From theory to practice

If you want to apply this to your own project, take a look at my SEO and online visibility service: clear prices from €200/month, a free quote and a reply within 24 hours.

Frequently asked questions

Answers to the most common questions on this topic.

Rich snippets are Google search results enhanced with extra information such as review stars, expandable FAQs, product prices, breadcrumbs and opening hours. Google generates them when it finds valid structured data (schema markup) on the page and decides it is relevant to the user's query.
Usually anywhere from 48 hours to a few weeks. Google first has to recrawl the page, then validate the markup, then decide whether to show the rich result. If you still see nothing after 4–6 weeks, run Google's official Rich Results Test to check the markup is valid and look in Search Console for any reported errors.
Not directly. Schema markup isn't a ranking factor, but it can increase CTR (click-through rate) thanks to rich snippets, which in turn bring more organic traffic. A higher CTR is an indirect quality signal that Google may take into account over time. The main benefit is visibility and clicks, not position.
JSON-LD is the format officially recommended by Google. It sits in a <script> tag separate from the HTML body, is easy to maintain and doesn't require changes to the page structure. Microdata and RDFa are still supported but more invasive — use them only if you have specific technical constraints.
Only to pages that actually contain questions and answers visible to users. Google requires the content in the markup to match the visible content on the page. If you add FAQPage schema to a page without real FAQs, you risk a manual penalty for misleading markup.
Use Google's Rich Results Test (search.google.com/test/rich-results): enter your page's URL and it will tell you whether the markup is valid and which rich results it can trigger, with an indicative preview. For a more technical check, use validator.schema.org. After deployment, monitor Search Console under Search > Enhancements.
Yes, both platforms automatically add Product schema. However, quality varies: some implementations lack important fields such as AggregateRating or have out-of-date prices. Always check your site in the Rich Results Test and consider a dedicated plugin such as Yoast SEO (WordPress) for more complete, customisable markup.
Early evidence suggests it does: sites with well-implemented markup are cited more often in AI Overviews because structured code helps the AI extract information more precisely. It hasn't been confirmed as a direct factor yet, but it's reasonable to expect high-quality structured data to improve how all Google systems understand content, AI features included.

Need help?

I can help you put what you've read in this article into practice.

Explore the service →

Latest articles

See all →

My services

All services →