Category Archives: Developer

Semantic SEO: What is the difference between and Microdata?

Often, developers being new to and the usage of semantic SEO techniques are confused about the relationship between and Microdata, Microformats, RDFa, GoodRelations, and other standards.

Here is a quick explanation that I have been given so often that I assume it may be useful for others:

When you expose structured data from within Web content by adding extra markup to HTML content, you have essentially two components:

1. A vocabulary (also known as data schema, ontology, data dictionary, depending on the background of the people you speak to): This provides global identifiers for types of things (“Product”, “Car”, “Restaurant” – often called “classes” or “types”) and for properties (e.g. “screen size”, “weight” – often called properties or attributes)

2. A syntax for publishing the data within Web pages in HTML. The syntax is the convention for the actual characters used to publish a piece of data. Relevant syntaxes in here are RDFa, Microdata, and recently JSON/JSON-LD.

Popular vocabularies on the Web are, GoodRelations, FOAF, SIOC, and a few others.

At Web scale, the absolutely dominant vocabulary for mainstream search engines is GoodRelations is a special case, since 99% of the GoodRelations vocabulary are now integrated in, so you do not have to choose between the two. In other words, is now a new namespace for using GoodRelations. Additional vocabularies may have relevance on the long tail and can typically be used in addition to with no negative effect. Once they will have gained sufficient popularity, search engines may care.

Now, you can use the same vocabulary in multiple syntaxes. For instance, you can publish in RDFa or Microdata or JSON/JSON-LD. The most appropriate syntax depends on the purpose and on the target applications of your data. In Web content, Microdata and RDFa should be equally well supported by search engines in theory. However, actual support varies.

As of now, I would recommend the following:

1. Microdata syntax for RDFa works, but not all structural variants of the same data will be understood by search engines and you need to be a real expert to find out which ones work and which ones don’t.

2. RDFa for GoodRelations in the original namespace, since for historic reasons, search engines know well how to process it.

3. JSON-LD for in eMails and other upcoming scenarios, see also

Microformats are a special case, since they combine syntax and vocabulary. For very simple data structures, this works well, and Microformats are widely understood by search engines. It is just my personal opinion, and I am sure advocates of Microformats will see things differently, but in the light of and generic syntaxes like Microdata, RDFa, and JSON-LD, Microformats will be limited to very basic usages, and likely fade out.

So in a nutshell, in Microdata is currently the most widely understood and recommended variant. in RDFa and in particular JSON-LD may become more important in the future, but you will have to monitor closely to which degree search engines can actually process data in those syntaxes.

JSON-LD: Finally, Google Honors Invisible Data for SEO

For quite a while, I have been arguing that RDFa as a syntax for structured data in Web content is problematic when it comes to exposing more granular data than just a few property names. While many advocates of RDFa stressed that reusing the exact same visible elements for structured data markup, as in this example

<div property="vcard:tel">+49-89-1234-0</div> 

was beneficial because it reduces redundancy, it also raises complexity for developers, since you violate the principle of “separation of concerns” – you have to align a given HTML tree structure with a given data structure, dictated by the vocabulary, like or GoodRelations.

As a consequence, I once developed and promoted the “RDFa in Snippets Style” approach, where the RDFa markup would reside in blocks of invisible <div> or <span> elements, like this:

<!-- Content for humans --> 
<!-- RDFa rich meta-data --> 
<div property="vcard:tel" content="+49-89-1234-0"/> 

This has been a big success – most of the GoodRelations extensions for shop software, running on at least 20,000 Web shops globally, use that approach and get their content honored by Google.

Now, one caveat has always been that Google indicated that invisible markup, i.e. RDFa elements that do not reuse visible content, would not be honored. The likely rationale for that guideline was that

  1. invisible markup invites spammers that try to manipulate the search engine,
  2. a link to human-readable content allows to combine the structured data and the textual content for information extraction heuristics, and
  3. the data quality is likely higher for visible content (since humans will complain otherwise).

Now, in silence, RDFa in “Snippet Style” (and similar patterns in Microdata) have for long been accepted by Google, as long as other quality indicators for the site were positive. But there was always a doubt, which was bad, since the development effort for weaving in advanced data markup in RDFa or Microdata syntax into HTML templates in a form that combined visible content elements with data markup was, in my experience, 5 – 10 times higher as compared to using RDFa in “Snippet Style”.

The bigs news is that this uncertainty is going away, since Google now openly moves to accepting data markup in JSON-LD syntax not tied to visual elements.

Of course, this is just a first signal, but I personally think that in the future, we will see JSON-LD in script elements for all advanced data markup, and RDFa and Microdata only for the very simple use-cases.

That is a good sign towards a broader use of data markup for e-commerce, for sure.