Technical SEO
Schema Markup Examples: 12 Types With Copy-Paste JSON-LD
Schema markup examples are working blocks of structured data, usually JSON-LD, that label what a page is about (an article, a product, an event, a person) so search engines and other machines can read it without guessing. This page gives you twelve of them, one per type, each ready to paste and edit.
Every example also carries a one-line note on what Google actually shows for that type today. That note matters more than the code. Between August 2023 and June 2026 Google removed or narrowed a long list of rich results, and many “schema examples” pages still promise features that no longer exist.
Key takeaways
- Of the twelve types most people search for, nine still feed a visible Google feature, one (Person) works only through profile pages and author links, and two (FAQ and HowTo) produce nothing in Google Search at all.
- Google’s own list of supported structured data features no longer includes FAQ, HowTo, course info or the sitelinks search box.
- Article and Organization have no required properties in Google’s documentation; Product, Review, Event, Course and Video do, and missing one of those makes the page ineligible.
- Some features carry conditions that no validator catches: breadcrumbs show on desktop only, events must be at a physical venue, and a business cannot mark up star reviews of itself.
- Valid markup that Google no longer uses does no harm, so the question for FAQ and HowTo is whether the markup is still accurate, not whether to rip it out.
The 12 types at a glance
The table below is the short version. The “Google in 2026” column comes from each type’s page in Google Search Central, read in September 2026.
| Type | What Google shows in 2026 | Required by Google |
|---|---|---|
| Article | Better title, image and date display; no dedicated rich result format | Nothing required |
| Organization | Logo and details in knowledge panels | Nothing required |
| BreadcrumbList | Breadcrumb trail in the result, desktop only | itemListElement with position, name, item |
| FAQPage | Nothing; the rich result was removed in May 2026 | Not applicable |
| Course | Course list, English only, needs 3+ courses | name, description |
| Event | Event experience in nine listed regions | name, startDate, location |
| Product | Product snippet with price, rating, availability | name plus offers, review or aggregateRating |
| Review | Star review snippet | author, itemReviewed, reviewRating |
| VideoObject | Video results, key moments, LIVE badge | name, thumbnailUrl, uploadDate |
| HowTo | Nothing since September 2023 | Not applicable |
| Person | No rich result of its own; used via profile pages | name inside ProfilePage |
| WebSite | Site name shown above results | name, url |
What Google removed between 2023 and 2026
The removals came in waves, and Google announced most of them in its documentation changelog rather than in blog posts. This is the sequence that matters for the twelve types on this page.
- August 2023. Google limited FAQ rich results to “well-known, authoritative government and health websites” and restricted HowTo rich results to desktop.
- September 2023. Google removed the How-to documentation “as this rich result is no longer shown in search results, on both desktop and mobile devices”, according to its changelog.
- November 2024. The sitelinks search box was removed from results from 21 November 2024.
WebSitemarkup for site names stayed supported. - January 2025. Google added a feature availability note to the breadcrumb docs saying breadcrumbs appear on desktop results, not mobile.
- June to September 2025. Google flagged a batch of features for retirement in June 2025 and, on 9 September 2025, removed the documentation for course info, estimated salary, learning video, special announcement and vehicle listing because they “are no longer shown in Google Search results” (changelog).
- May to June 2026. FAQ rich results went for everyone, including the government and health sites that had kept them.
Google stopped showing FAQ rich results from 7 May 2026, posted the deprecation notice on 8 May, removed the documentation on 15 June 2026 and dropped Rich Results Test support in June 2026 (Google Search Central changelog). This is distinct from the August 2023 restriction, which limited FAQ rich results to government and health sites rather than removing them. Search Console API support for the FAQ enhancement report was scheduled to end in August 2026, as Passionfruit’s summary of the rollout records.
The practical result is that the supported list is shorter than most checklists assume. When a block below says “nothing”, believe it, and put your effort into the types that still pay.
Twelve copy-paste JSON-LD examples
Each block below is JSON-LD, which Google’s general structured data guidelines mark as the recommended format. Paste it inside a <script type="application/ld+json"> tag in the page’s HTML, then replace every example.com value with your own.
Two rules apply to all twelve. The markup must describe content a visitor can see on the same page, and it must be in the HTML your server sends, not injected later by a script that some crawlers never run. That second rule is covered in depth in JavaScript SEO.
1. Article (and BlogPosting)
Google in 2026: Article markup helps Google show better title text, images and date information for the page. Google’s documentation says “there are no required properties”. It lists author, author.name, author.url, dateModified, datePublished, headline and image as recommended.
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How We Cut Crawl Waste by Fixing Faceted URLs",
"image": [
"https://example.com/images/crawl-waste-1x1.jpg",
"https://example.com/images/crawl-waste-4x3.jpg",
"https://example.com/images/crawl-waste-16x9.jpg"
],
"datePublished": "2026-10-02T09:00:00+01:00",
"dateModified": "2026-10-02T09:00:00+01:00",
"author": [{
"@type": "Person",
"name": "Sam Rivera",
"url": "https://example.com/team/sam-rivera/"
}]
}
Use BlogPosting for blog posts, NewsArticle for news and Article for everything else; Google accepts all three. List every author in their own object, never as one comma-separated name. The full property-by-property treatment, including why publisher is not on Google’s list, is in Article schema.
2. Organization
Google in 2026: Organization markup can influence the logo and details in knowledge panels. Google says there are no required properties and recommends placing it on the home page or a single “about us” page, not on every page.
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Analytics Ltd",
"alternateName": "Example Analytics",
"url": "https://example.com/",
"logo": "https://example.com/images/logo-512.png",
"description": "Technical SEO and analytics consultancy for SaaS companies.",
"email": "hello@example.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "10 Example Street",
"addressLocality": "London",
"postalCode": "EC1A 1AA",
"addressCountry": "GB"
},
"sameAs": [
"https://www.linkedin.com/company/example-analytics",
"https://github.com/example-analytics"
]
}
The logo must be at least 112x112px and crawlable. Use the most specific subtype you qualify for, such as OnlineStore or a LocalBusiness subtype. The identifiers that do the disambiguation work are covered in Organization schema.
3. BreadcrumbList
Google in 2026: Still a rich result, but Google’s docs now say the feature is available on desktop in all regions and languages. Mobile results no longer show it.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Insights",
"item": "https://example.com/insights/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Technical SEO",
"item": "https://example.com/insights/technical-seo/"
},
{
"@type": "ListItem",
"position": 3,
"name": "Crawl Budget"
}
]
}
A trail needs at least two ListItem entries. The last item can omit item, in which case Google uses the page’s own URL. Google recommends a trail that matches a typical user path rather than mirroring the URL structure. The common mistakes are listed in breadcrumb schema.
4. FAQPage
Google in 2026: Nothing in Google Search. The dates and caveats are in the removals section above. FAQPage is still a type defined on schema.org, so the markup below is valid, but it no longer earns any Google feature.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How long does a technical SEO audit take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A full audit of a site under 10,000 URLs usually takes two to three weeks, including the prioritised fix list."
}
},
{
"@type": "Question",
"name": "Do you need access to Search Console?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Read access to Search Console and analytics is needed to check indexing and traffic data."
}
}
]
}
When Google restricted the feature in 2023, it said there is no need to proactively remove unused structured data because it “does not cause problems for Search”. Keep it only if the questions and answers are genuinely on the page. Whether it still helps answer engines is discussed in FAQ schema.
5. Course
Google in 2026: Only the course list survives. The separate course info feature was among the types Google removed in September 2025. Per Google’s docs, the course list rich result is available in English in all regions, you must mark up at least three courses, and you must add carousel (ItemList) markup to a summary page or an all-in-one page.
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Course",
"url": "https://example.com/courses/#technical-seo-foundations",
"name": "Technical SEO Foundations",
"description": "Crawling, indexing and rendering for developers.",
"provider": {
"@type": "Organization",
"name": "Example Academy",
"sameAs": "https://example.com/"
}
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Course",
"url": "https://example.com/courses/#structured-data-in-practice",
"name": "Structured Data in Practice",
"description": "Writing and testing JSON-LD for real templates.",
"provider": {
"@type": "Organization",
"name": "Example Academy",
"sameAs": "https://example.com/"
}
}
},
{
"@type": "ListItem",
"position": 3,
"item": {
"@type": "Course",
"url": "https://example.com/courses/#analytics-for-seo",
"name": "Analytics for SEO",
"description": "GA4 and Search Console reporting for SEO teams.",
"provider": {
"@type": "Organization",
"name": "Example Academy",
"sameAs": "https://example.com/"
}
}
}
]
}
Google’s table lists name and description as required and provider as recommended, and it gives description a display limit of 60 characters. Its content guidelines also rule out promotional names (“Learn ukulele, only $30!”) and anything that is not a real course with an educational outcome and instructors.
6. Event
Google in 2026: Events can appear in Google’s event experience, which the docs list as available in nine regions, including the United States, the United Kingdom, Canada, Australia and India. Since June 2025 the guidance is stricter: events must be bookable by the general public and held at a physical location, and Google removed the online event properties.
{
"@context": "https://schema.org",
"@type": "Event",
"name": "Technical SEO Meetup: Log Files in Practice",
"startDate": "2026-11-12T18:30:00+00:00",
"endDate": "2026-11-12T21:00:00+00:00",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"@type": "Place",
"name": "The Example Hall",
"address": {
"@type": "PostalAddress",
"streetAddress": "25 Example Road",
"addressLocality": "Manchester",
"postalCode": "M1 1AA",
"addressCountry": "GB"
}
},
"image": [
"https://example.com/images/meetup-16x9.jpg"
],
"description": "Three short talks on reading server logs for crawl analysis, followed by open Q&A.",
"offers": {
"@type": "Offer",
"url": "https://example.com/events/log-files/tickets/",
"price": 0,
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock"
},
"organizer": {
"@type": "Organization",
"name": "Example Analytics",
"url": "https://example.com/"
}
}
Each event needs its own URL with its own markup; Google recommends marking up single event pages rather than schedule pages. Include the UTC offset in startDate, and do not set a midnight start time when you only know the day.
7. Product
Google in 2026: Product markup can make a page eligible for a product snippet, a text result with ratings, price and availability. The required properties are name plus at least one of review, aggregateRating or offers.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example Log Analyser Pro",
"image": [
"https://example.com/images/log-analyser-1x1.jpg"
],
"description": "Desktop tool that parses server logs and reports crawler activity by URL group.",
"sku": "ELA-PRO-2026",
"brand": {
"@type": "Brand",
"name": "Example Analytics"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"reviewCount": 38
},
"offers": {
"@type": "Offer",
"url": "https://example.com/log-analyser/",
"price": 149.00,
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock"
}
}
Inside offers, Google requires price. priceCurrency is recommended for product snippets but required for merchant listing experiences, so include it. A priceValidUntil date in the past can stop the snippet showing. The rating must be visible on the page, not only in the markup.
8. Review
Google in 2026: Review snippets (stars) are still supported for a defined set of types, including books, courses, events, movies, products, recipes and software apps. The rule that trips most businesses: if the reviewed entity controls the reviews about itself, its LocalBusiness or Organization pages are ineligible for the star review feature, and that includes reviews shown through an embedded widget.
{
"@context": "https://schema.org",
"@type": "Review",
"itemReviewed": {
"@type": "Book",
"name": "The Example Guide to Crawling"
},
"author": {
"@type": "Person",
"name": "Sam Rivera"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": 4,
"bestRating": 5
},
"datePublished": "2026-09-30",
"reviewBody": "Clear on crawl budget and rendering, thinner on international setups."
}
Google requires author, itemReviewed (unless the review is nested inside the item), the item’s name, and reviewRating with a ratingValue. The author name must be shorter than 100 characters. Google’s guidelines also rule out fake reviews and undisclosed incentivised ones, and aggregating ratings from other websites. Which pages can still show stars, and how the self-serving rule applies, is in Review schema.
9. VideoObject
Google in 2026: Video markup can influence the thumbnail, title, description, upload date and duration shown in video results, and it enables two extra features: key moments via Clip markup and a LIVE badge via BroadcastEvent. The separate learning video feature was removed in September 2025.
{
"@context": "https://schema.org",
"@type": "VideoObject",
"name": "Reading Server Logs for SEO in Ten Minutes",
"description": "A walkthrough of filtering Googlebot requests and grouping them by template.",
"thumbnailUrl": [
"https://example.com/images/log-video-thumb.jpg"
],
"uploadDate": "2026-09-15T10:00:00+01:00",
"duration": "PT10M12S",
"contentUrl": "https://example.com/video/log-files.mp4",
"hasPart": [
{
"@type": "Clip",
"name": "Filtering verified Googlebot",
"startOffset": 45,
"endOffset": 210,
"url": "https://example.com/videos/log-files/?t=45"
},
{
"@type": "Clip",
"name": "Grouping requests by template",
"startOffset": 210,
"endOffset": 480,
"url": "https://example.com/videos/log-files/?t=210"
}
]
}
The required properties are name, thumbnailUrl and uploadDate. Each Clip needs name, startOffset and a url on the same path as the video page with a time parameter. If your video lives on YouTube, chapters in the description do the key moments job; that route is covered in YouTube chapters for SEO.
10. HowTo
Google in 2026: Nothing. Google stopped showing HowTo rich results on both desktop and mobile in September 2023 and removed the documentation. HowTo remains a schema.org type, so this block is valid vocabulary, but no Google feature reads it.
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to submit an XML sitemap in Search Console",
"step": [
{
"@type": "HowToStep",
"name": "Open the Sitemaps report",
"text": "In Search Console, select your property and open Indexing, then Sitemaps."
},
{
"@type": "HowToStep",
"name": "Enter the sitemap URL",
"text": "Type the sitemap path, for example sitemap-index.xml, and press Submit."
},
{
"@type": "HowToStep",
"name": "Check the status",
"text": "Return after a day and confirm the status reads Success and the discovered URL count looks right."
}
]
}
If you already have HowTo markup and the steps match the page, there is no reason to rush to remove it. For new pages, a numbered list in the HTML with clear step headings does the job for readers and for answer engines, without markup that no Google feature consumes. The wider deprecation context is in how to create rich snippets with JSON-LD.
11. Person (via ProfilePage)
Google in 2026: There is no Person rich result. Google reads Person in two places: inside ProfilePage markup, which “helps Google Search understand the creators that post in an online community”, and as the author of articles and reviews. Google’s Article docs recommend that when author.url points to an internal profile page, you mark that page up with profile page structured data.
{
"@context": "https://schema.org",
"@type": "ProfilePage",
"dateCreated": "2025-03-01T09:00:00+00:00",
"dateModified": "2026-09-20T14:00:00+01:00",
"mainEntity": {
"@type": "Person",
"name": "Sam Rivera",
"alternateName": "samrivera",
"description": "Technical SEO consultant and former backend developer.",
"image": "https://example.com/images/sam-rivera.jpg",
"sameAs": [
"https://www.linkedin.com/in/example-sam-rivera",
"https://github.com/example-sam"
]
}
}
The only required property is name on the Person (or Organization) in mainEntity. Valid pages include an author page, an “About me” page and an employee page; a store’s home page is not one. The markup itself, with one Person @id reused across every post, is in Author schema; why this entity layer matters for answer engines is covered in E-E-A-T for AI search.
12. WebSite
Google in 2026: WebSite markup on the home page tells Google your preferred site name, the name shown with your results on mobile and desktop. The sitelinks search box that the same type used to power was removed in November 2024.
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Example Analytics",
"alternateName": ["EA", "example.com"],
"url": "https://example.com/"
}
Put it on the domain or subdomain home page only; Google does not support site names for subdirectories. Use the same name you use in Organization markup. Google notes that site names are not supported in the Rich Results Test, so check this one with the Schema Markup Validator instead. If an old block still carries a potentialAction for the search box, removing it is optional; Google said unsupported markup like this won’t cause issues. What the type still does, with a full site-name example, is in WebSite schema.
How to combine several types on one page
Most real pages need more than one type. A blog post typically carries BlogPosting and BreadcrumbList; a home page carries Organization and WebSite. You can ship them as separate <script> blocks, or join them in one block with an @graph array and connect them with @id references.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Example Analytics",
"url": "https://example.com/",
"logo": "https://example.com/images/logo-512.png"
},
{
"@type": "WebSite",
"@id": "https://example.com/#website",
"name": "Example Analytics",
"url": "https://example.com/",
"publisher": { "@id": "https://example.com/#organization" }
}
]
}
The @graph pattern keeps one source of truth for each entity. It also makes one class of bug easy to introduce: a reference that points at a node of the wrong type still parses, so check that each @id resolves to the type the property expects.
How to check a block before it ships
Validation is three separate questions, and each tool answers only one of them.
- Does it parse? Any JSON parser answers this. Every block on this page parses with
python3 -m json.tool, and each carries the properties Google’s documentation lists as required for its type. That is a syntax and completeness check, not a promise of a rich result. - Is it eligible for a Google feature? The Rich Results Test answers this for supported features only. It will say nothing useful about FAQ or HowTo now, and it does not support site names.
- Is it true? No tool answers this. Google’s guidelines repeatedly warn that problems caused by spammy content or markup “may not be a syntax issue”, so the Rich Results Test won’t identify them. That check belongs in review, against the visible page.
After release, watch the relevant rich result report in Search Console. Google’s docs suggest checking after the first deploy, after template changes and periodically, because a template change can silently drop markup across thousands of pages. A recurring technical SEO audit is where that periodic check usually lives.
Where schema still earns its keep beyond Google
Correct markup does not guarantee any display. Google’s guidelines say that using structured data “enables a feature to be present, it does not guarantee that it will be present”. What the markup does reliably is remove ambiguity: which entity wrote this, when, about what, and which organisation stands behind it.
That clarity is useful outside Google’s results page too. Answer engines and AI crawlers read the raw HTML, and a clean, server-rendered block that agrees with the visible content is easier to parse than a page they have to interpret. The evidence and the limits of that argument are set out in structured data for AI search, and whether rich results move clicks at all is covered in do rich snippets help SEO.
The priority order that follows from all of this is simple. Ship the types that still produce a Google feature for your content (Article, Breadcrumb, Organization, WebSite, and Product, Review, Event, Course or Video where they apply). Keep Person and ProfilePage accurate for authorship. Leave accurate FAQ and HowTo markup alone, and stop adding it for rich results that no longer exist.
If you want the schema layer designed once, generated from your content model and checked in CI rather than patched page by page, that is part of GEO and technical SEO consulting.
Frequently asked questions
What is an example of schema markup?
A common example is a BreadcrumbList block in JSON-LD that lists a page’s position in the site hierarchy, such as Insights, then Technical SEO, then Crawl Budget. It sits in a <script type="application/ld+json"> tag in the page’s HTML. Google can use it to show a breadcrumb trail in desktop search results.
What are the different types of schema markup?
Schema.org defines hundreds of types, but the ones that matter for Google are those in its list of supported structured data features. The most widely used are Article, Organization, BreadcrumbList, Product, Review, Event, Course, VideoObject, ProfilePage (with Person) and WebSite. FAQPage and HowTo are still valid schema.org types but no longer produce anything in Google Search.
Which schema types still get rich results in Google?
As of October 2026, Google’s supported features include article, breadcrumb (desktop only), course list, event, organization, product snippets, review snippets, video, profile page and site names, among others such as recipe and job posting. FAQ, HowTo, course info, learning video and the sitelinks search box are gone. Check Google’s search gallery page before planning around a feature, because the list has shrunk several times since 2023.
Should I remove FAQ and HowTo schema from my site?
Not necessarily. Google has said unused structured data does not cause problems for Search, so accurate markup can stay. Remove it if the questions or steps no longer match what is on the page, because stale markup misdescribes the page to every parser that reads it.
Is JSON-LD better than Microdata or RDFa?
Google supports all three formats and lists JSON-LD as recommended. JSON-LD is also easier to maintain, because it sits in one script block rather than being woven through the HTML. Whichever you use, the markup must be in the HTML the server sends.
Does schema markup improve rankings?
Do not add it expecting a ranking lift. Structured data helps Google understand a page and can make it eligible for a richer display, and Google’s guidelines say that eligibility never guarantees the feature appears. The benefit is in how the result looks and how clearly machines can read the page.