First Rich Snippets from JSON-LD Spotted in the Wild (And They're Delicious)

by Aaron Bradley on July 23, 2015

in Search Engines, Semantic Web, SEO

Post image for First Rich Snippets from JSON-LD Spotted in the Wild (And They're Delicious)

Webmasters accustomed to marking up pages with structured data in order to generate rich snippets in Google have long looked forward to the day when Google sanctioned the use of JSON-LD for this purpose, rather than requiring them to use RDFa or microdata to provide these annotations inline.

JSON-LD is for most much easier to use than RDFa or microdata, is less likely to result in syntax errors when modified comaped to inline code, and can be inserted from JavaScript and still be understood by Google.

However, Google has long insisted on RDFa or microdata for most classes of rich snippets. Its structured data guidelines for developers state:

Google is in the process of adding JSON-LD support to more markup-powered features. So far, JSON-LD is supported for all Knowledge Graph features, sitelink search boxes, and Event Rich Snippets; Google recommends the use of JSON-LD for those features. For the remaining Rich Snippets types and breadcrumbs, Google recommends the use of microdata or RDFa.

Despite this the Google documentation for rich snippets has recently changed to include examples for all rich snippets types listed on the site: products, reviews, events, software apps, videos and articles (indeed, it's now the first syntax shown in examples for each of these rich snippet types). And recipes: example in JSON-LD on Google Developers

Many webmasters have been encouraged to see these JSON-LD examples surface, but reticent to employ JSON-LD for Google rich snippet types until there's been JSON-LD-generated rich snippets spotted in the wild.

That day has arrived, thanks to the efforts of structured data veteran and cook Grace Massa Langlois. I say "and cook" because it was on her recipe-rich site that she made code modifications to see if a recipe that included markup in – and only in – JSON-LD could successfully trigger the generation of a rich snippet in Google.

And, yes, if you now search for "grace's cannoli and cannoli filling recipe" on Google, you will see this result (which links to this recipe):

A rich snippet for cannoli generated from markup in JSON-LD

The rich snippet image, date and cook time are clearly being generated from the values declared for properties in JSON-LD – in particular totalTime, as that "3 hr 3 min" in the snippet only materialized after she modified pre-existing JSON-LD code to include it.

<script type="application/ld+json">
  "@context": "",
  "@type": "Recipe",
  "image" : "",
  "name": "Cannoli Siciliani – The Ultimate Italian Pastry",
  "description" : "Prepare one of Italy's most famous pastries at home, cannoli siciliani. Crispy cannoli shells filled with creamy ricotta filling.",
  "totalTime" : "PT3H3M",
  "cookTime" : "PT45M",
  "prepTime" : "PT2H18M", 
  "recipeCategory" : "Pastries",
  "recipeYield" : "28 pastries",
  "ingredients" : [
     "167 g (1 1/3 cups) plain (all-purpose) flour",
     "1/4 teaspoon salt",
     "14 g (1 tablespoon) granulated sugar",
     "5 g (2 teaspoons) unsweetened cocoa powder (not Dutch processed)",
     "28 g (2 tablespoons) vegetable shortening",
     "6 to 7 tablespoons sweet Marsala wine",
     "Vegetable Oil for frying",
     "1 to 2 large egg whites, lightly beaten",
     "660 g (3 cups) fresh ricotta, drained overnight",
     "167 g to 188 g (1 1/3 to 1½ cups) confectioners’ sugar, sifted",
     "1½ teaspoons pure vanilla extract",
     "50 g (1/3 cup) finely diced candied citron or candied orange peel, or a combination (optional)",
     "65 g (1/3 cup) miniature semi-sweet chocolate chips"
] ,
  "datePublished" : "2010-06-07",
  "author" : {
  "@type": "Person",
  "name" : "Grace Massa Langlois",
  "sameAs" : [ 

She has also verified JSON-LD-based rich snippet generation for another recipe, as detailed in the comments to this Google+ discussion started by Tony McCreath.

So there you have it: yes, JSON-LD can be used rather than RDFa or microdata to generate rich snippets in Google, at least for recipes rich snippets.

And while Google's documentation has not yet changed, it may simply be a case of one structured data documentation page not keeping pace with changes to others. One way or another, webmasters will now be keeping a keen eye on other rich snippet types to see if JSON-LD for them, too, is a recipe for success.

Many thanks to Grace for conducting these tests and sharing the results with the semantic search community, and Tony for getting the conversation started.

UPDATE (publication + 1.5 hrs): Dan Brickley of Google said the following in relation to this post:

Our documentation may have got slightly ahead of our implementation efforts here … but glad to hear that JSON-LD is proving so popular. Reviews/products/software RS are still best expressed in microdata/rdfa for now.

So don't put away your itemtypes and typeofs just yet boys and girls – but soon, hopefully, soon.

UPDATE 2 (publication + 4 hrs): On Google Developers, the rich snippet documentation for products, reviews and software apps has just been revised to carry this message:

"We are in the process of implementing JSON-LD support for this Rich Snippet type. At the current time, we recommend using microdata or RDFa." - Google Developers

As well, the JSON-LD examples for these types have been moved from the first to the last tab.

However, the rich snippet documentation for articles, videos, events and recipes have not been modified to carry this message, and the JSON-LD example for each still takes pride of place (and in fact the event rich snippet example is currently available only as JSON-LD).

UPDATE 3 (24 July 2015): Googler Mariya Moeva has confirmed explicitly that recipe rich snippets are now supported:

We now support JSON-LD also for recipe rich snippets!

1 Natan July 23, 2015 at 12:45 pm

This is really exciting. I put some JSON-LD on one of my sites (small, insignificant) a while ago to see if I could get it to generate rich snippets and I’ve been waiting for it to happen, so it’s good to know that it’s working for someone.

2 Scott July 23, 2015 at 2:27 pm

We’ve been waiting forever too, for actual examples of it working. I don’t know if i’d call it “really exciting” @natan 😉 – but it’s definitely nice to see….

3 AJ Kohn July 23, 2015 at 3:08 pm

This is both great news and frustrating at the same time. I’m eager for the time when JSON-LD is used to generate important rich snippets. So my reaction to this can be best summed up with the following image.

4 Natan July 23, 2015 at 3:20 pm

plus one

5 Aaron Bradley July 23, 2015 at 4:11 pm

I hear you AJ!

However, I’m hopeful that the day will come, and come soon, that those other rich snippet types will be supported.

On one hand this is based on the addition of all those JSON-LD examples to each rich snippet type, which is not a trivial undertaking.

On the other hand it is based – and based more strongly – on the text that’s been added to the products, reviews and software apps rich snippet pages as described above in the second update (added since your comment was made).

The message says they “are in the process of implementing JSON-LD support for this Rich Snippet type.” Which seems to be a pretty clear indication that this support is indeed coming, even if it is not currently available.

6 AJ Kohn July 23, 2015 at 4:15 pm

Well that last messaging is promising.

The question is whether they’ll move in Panda Update time (aka snail’s pace) or Google Analytics feature release time (aka cranking it out).

So it does seem to be not a matter of if, but when. And that’s something to cheer about.

7 Jim Robinson July 24, 2015 at 1:50 pm

Agreed. I think they’re already using JSON-LD for certain Knowledge Panel results, and some of those have a rich snippet equivalent. Hopefully it won’t be long before we can standardize on one clean and easily maintainable method.

8 Patrick Coombe July 26, 2015 at 9:13 am

Really surprised to hear anyone from G say don’t out away your item types yet, I seem to remember reading somewhere that json+ld was good to go with Google and hear to stay

9 Patrick Coombe July 26, 2015 at 9:13 am

Ps mobile site looking really good

10 Paul Stanely September 22, 2015 at 3:08 am

It’s an easy code to configure the rich snippets. Rich snippets have a huge impact to improve the CTR. It’s important to display most relevant information in search results.
Also check this Magento Rich Snippets extension by FME.

11 Alex February 21, 2018 at 9:22 am

Very nice markups thanks for the help! Wouldve taken me hours to do it without you guys!

Previous post:

Next post: