tooldura
SEO Tools

Schema Markup Rich Results: What Google Still Shows

T
tooldura editorial
10 min readUpdated October 14, 2026Open tool →

Most schema tutorials were written when adding FAQ markup to any page put a stack of expandable questions under your result. That was cut back in 2023 and switched off entirely in May 2026, and a lot of the advice has not caught up. Markup still matters, but which types are worth the effort has changed, and so has what Google asks of the data before it shows anything.

What Structured Data Does

Structured data is a description of the page written for machines, using the vocabulary maintained at schema.org. It tells a search engine that this string is a price, that one is a cooking time and this URL is the product photo, things a crawler would otherwise have to guess from the layout.

Google uses it for two separate things. The visible one is rich results: stars, prices, cooking times, event dates and breadcrumb trails drawn into the search listing. The less visible one is understanding, connecting your organization to its logo and social profiles, or a recipe to its ingredients.

What it does not do is rank the page. Google has said repeatedly that structured data is not a general ranking signal. A rich result can lift click-through rate, because a result with a price and four and a half stars takes up more room and answers part of the question before the click, but the position itself comes from the content.

Why JSON-LD and Not Microdata

Schema.org vocabulary can be written three ways: as JSON-LD in a script block, as Microdata attributes on HTML elements, or as RDFa. Google reads all three, and recommends JSON-LD.

The reason is practical. Microdata is woven into the markup, so itemprop="price" has to sit on the exact element that displays the price, and a redesign that moves that element can silently break the data. JSON-LD sits in one <script type="application/ld+json"> block, in the head or the body, and does not care how the page is laid out. It can be generated from the same data the template uses, which is how most sites end up producing it.

JSON-LD is a W3C Recommendation (version 1.1 since 2020), and the @context line at the top is what tells a parser that the names inside, such as name, offers and startDate, are schema.org terms rather than words you made up.

Which Types Still Earn Something

Based on Google Search Central's structured data documentation as of October 2026. Google changes this list without much notice, so check the search gallery before building a large template.

TypeWhat it can showRequired by GoogleWorth it?
ProductPrice, availability, review starsname, plus offers, review or aggregateRatingYes, for any page selling one product
RecipePhoto, cooking time, rating, caloriesname, imageYes, recipe results are almost all rich
EventDate, venue, ticket linkname, startDate, locationYes, for public events with a page each
ArticleHeadline, image and date in Top Stories and DiscoverNone strictlyYes, cheap to add on any article
BreadcrumbListA readable path in place of the URLTwo or more items, each with a nameYes, on any site with real hierarchy
LocalBusinessDetails in the knowledge panelname, addressYes, but Business Profile matters more
OrganizationLogo and details in the knowledge panelNone strictlyYes, once, on the home or about page
VideoObjectThumbnail, length, key momentsname, thumbnailUrl, uploadDateYes, on any page built around a video
JobPostingA listing in Google's job searchtitle, description, datePosted, hiringOrganization, jobLocationYes, it is how jobs get into that search
SoftwareApplicationPrice and rating for an appname, offers.price, a rating or reviewYes, for an app page with real ratings
ReviewStars for one review of a book, film, product and so onauthor, itemReviewed.name, reviewRatingYes, on editorial review pages
ProfilePageName and details of a person or membermainEntity with a nameYes, on author and member pages
WebSiteThe site name shown above your resultsname, urlYes, once, on the home page
FAQPageNothing, since May 2026n/aNo
HowToNothing; the feature was retiredn/aNo

What Was Taken Away, and Why

In August 2023 Google limited FAQ rich results to well-known, authoritative government and health websites, and dropped HowTo rich results, first on mobile and a few weeks later on desktop. The stated reason was a cleaner results page. The real pattern was easy to see in any search: FAQ markup had become a way to take up three times the vertical space with questions nobody had asked.

The sitelinks search box followed in late 2024, and in June 2025 Google retired another batch of less used features, among them course info, estimated salary, special announcements and vehicle listings. Then on May 7, 2026 FAQ rich results stopped appearing for every site, government and health included, and the documentation for them was taken down in June.

None of this makes the markup invalid. A FAQPage block still validates, other search engines can still read it, and there is no penalty for leaving it in place. It no longer produces anything visible in Google, so it is not worth writing for new pages.

⚠️

The markup must describe what is on the page

Google's structured data policy is the part people skip. Everything in the JSON-LD has to be visible to someone reading the page: the price, the questions and answers, the rating. Marking up content that is hidden, out of date or invented is the usual reason for a structured data manual action, which removes rich results from the whole site, not only the page that broke the rule.

The Details Each Type Gets Wrong

The validators catch syntax. These are the problems that pass validation and still cost the rich result.

1

Product: a price without a currency

An Offer with price but no priceCurrency is ambiguous, and Google treats it as incomplete. Write the price as a plain number too: 89.99, not $89.99 or 89,99.

2

Product and LocalBusiness: reviews of yourself

Since 2019 Google ignores review stars that a business publishes about itself on its own site, for LocalBusiness and Organization. Stars on a product page are fine when they come from customers and are shown on that page.

3

Recipe: times as words

prepTime and cookTime are ISO 8601 durations, so twenty minutes is PT20M and an hour and a half is PT1H30M. "20 minutes" is not read as a time at all.

4

Event: past events left marked up

An Event block on a page about something that ended last year is stale data. Either remove it or keep it accurate, and use eventStatus for postponed or cancelled events instead of deleting the markup.

5

Breadcrumbs: a trail that does not match the page

The BreadcrumbList should follow the path a visitor would take through the site, and its positions start at 1. A single-item trail earns nothing; there has to be at least a parent and the page.

6

Organization: no sameAs

The sameAs list of official profiles (LinkedIn, Wikipedia, Crunchbase, social accounts) is what lets Google be sure your organization is the one it already knows about. It is the most useful line in the block and the one most often left out.

7

Video: the page link given as the player

embedUrl is the player itself, such as a YouTube /embed/ address, not the page the video sits on. Google prefers contentUrl, the video file, over either. Each video also needs a thumbnail of its own; one placeholder image shared by every video on the site is a common reason none of them get a thumbnail in results.

8

Job posting: the job that closed months ago

Google expects a filled job to come down or to carry a validThrough date that has passed. A listing that keeps its markup after the role is gone is the kind of stale data that gets a site's postings dropped from job search.

Generate the JSON-LD for your page

Fill in a form, copy the script block, and see what is still missing for the rich result.

Open Schema Markup Generator →

Testing It Before and After

Two free tools cover different questions. The Rich Results Test from Google answers whether this page is eligible for a Google rich result, and it renders the page the way Googlebot does, so it also catches markup that a JavaScript framework fails to output. The Schema Markup Validator at validator.schema.org checks the markup against the full schema.org vocabulary, whatever Google happens to support.

Passing the Rich Results Test means eligible, not guaranteed. Google decides per query whether to show the rich version, and new markup takes a recrawl before anything changes. After that, the Enhancements reports in Search Console list every page with a given type and flag the ones whose data broke, which is how you find out that a template change removed the price from three hundred product pages.

One mistake shows up in nearly every audit: two blocks describing the same thing. A theme outputs its own Product markup, a plugin adds another, and the page ends up with two products with different prices. Check the page source for every application/ld+json block before adding a new one.

Frequently Asked Questions

Found this guide useful? Pass it on.

Related Tools

Keep Reading