Updated: Oct 15, 2021
Do you want to learn how you can create and add Schema markups to your website by using JSON-LD?
If so, keep reading this ultimate guide.
In this article, not only will you find information about rich snippets and Schema structured data, but you will also learn how to write JSON-LD and generate all the markups you want.
I’ll tell you exactly how to use schema.org to create your very own structured data markups.
Table of contents
In 2011, Google, Microsoft (Bing), Yahoo! and Yandex launched schema.org, an initiative to provide a commonly shared vocabulary for structured data.
Structured data is used by webmasters to help search engines understand published content on a web page.
Schema’s mission statement (source: schema.org, info retrieved on May 2020):
Schema.org is a collaborative, community activity with a mission to create, maintain, and promote schemas for structured data on the Internet, on web pages, in email messages and beyond.
What are Schema markups?
Schema markups are snippets of code webmasters usually insert in the header of web pages to further describe and specify online content for search engines.
Search engines use this data to interpret online content and display more appropriate information in the SERP (Search Engine Results Page)
When you use HTML tags on your web pages, you are telling browsers how to display information, including the tag (if you want to know what an HTML tag is, read my following bonus paragraph).
<h1>Schema markup SEO guide</h1>
tells browsers to display the text string “Schema markup SEO guide” in a heading 1 format. Nevertheless, the HTML tag doesn’t give any additional information on what the text string means.
“Schema markup SEO guide” can be a title of a blog post or the title of a book that you can actually purchase.
It’s difficult for search engines to correctly understand the context of a text string and display to a user the right search results accordingly.
So, schema.org provides context to help search engines interpreting online content.
Be aware that search engines compare Schema markups information with the page content. If they don’t match, search engines will not consider your structured data and could also penalize you.
In other words, if you insert a Review markup (I’ve explained what it is later), but in your page you don’t actually have any reviews, Google doesn’t consider this markup valid.
To write Schema markups, webmasters can use Microdata, RDFa or JSON-LD formats.
In this article, I’ll only focus on JSON-LD format, since Google recommends it.
Why is Schema structured data important for SEO?
In a 2018 Reddit AMA (Ask Me Anything), John Mueller, senior webmaster trends analyst at Google, stated that Schema markups help rankings.
We do use [structured data] to understand a page better, it helps us to rank it better where it’s relevant.
Adding Schema structured data in your website’s HTML is one of the many SEO (Search Engine Optimization) activities you should include to ensure optimal performance in the search.
If structured data helps Google understand a page better, it may rank higher in the SERP or rank for additional keywords.
Nevertheless, on the 2nd of April 2018, Mueller Tweeted that Schema markups are not a ranking signal. It means your website doesn’t rank higher just because you’ve added Schema structured data on your pages.
In other words, RankBrain (Google’s machine-learning AI algorithm) doesn’t directly consider structured data as a ranking signal to determine the most relevant results to search engine queries.
Bonus: what is an HTML tag?
Just to have a complete overview on Schema markups, I’ve decided to write this brief paragraph on what an HTML tag is.
A tag is a command inserted in the code of a web page which tells browsers to do something (e.g. perform an action, display content accordingly and so on).
Tags are enclosed in between a single left and right angle quote: “<” and ”>”.
HTML is a language that you can use to express these tags: <html>.
Example of HTML tag:
<!DOCTYPE html> <html lang="en"> <head> <title>Title of the document</title> </head> <body> <h1>This is a heading</h1> <p>This is a paragraph.</p> </body> </html>
This is what it means line by line:
Doctype declaration of the document. In this case HTML5;
It indicates the start of an HTML document in English (language of the document);
It’s the first part of the HTML document that search engines and browsers read. It’s not visible on the web page;
It represent the title of the document (or web page) and it is displayed from search engines in the SERP and from browsers in the window tab;
End of the head section (or header);
Begin of the body section: this content is visible on the page;
It represents a heading 1: it tells search engines what the web page is all about and commands browsers to display the text string in between the tags with a heading 1 format;
It represents a paragraph: it provides search engine information about the page and commands browsers to display the text string in between the tags with a paragraph format;
End of the body section;
End of the document.
When search engines process Schema markups, they may display additional information in the SERP to help users in their search. This additional information is called rich snippets or rich results.
What are rich snippets?
Rich snippets (or rich results) are search results with additional information displayed. Rich snippets are the results of Schema markups and their data is pulled from the structured data found in a page’s HTML.
This is a Google search result without rich snippets:
This is a Google search result with a rich snippet:
Many entrepreneurs ask me how they can add rich snippets to their website.
This question is completely wrong.
Just to clarify, rich snippets are a result of structured data. You add Schema structured data in your website’s HTML to generate rich results.
So, the right question should be how to add Schema markups in a website to generate rich snippets.
I’ll show you how in a moment.
Why are rich snippets important for SEO?
Rich snippets mean higher organic CTR (Click-Through-Rate).
It’s not a secret that a rich result stands out more from the others and an eye-catching search result translates into more clicks.
The percentage of users that click on a search result determines the CTR.
When the CTR doesn’t refer to paid search results (e.g. Google Ads), it is called organic. In SEO jargon, organic means “free”, a result that you attained without paying money.
CTR is a key ranking signal.
In 2016, Larry Kim’s study demonstrated the correlation between CTR and search rankings (see image below).
Every time your pages beat the expected organic CTR for a given position, you gain an opportunity to to appear in higher organic positions.
Also Google has confirmed multiple times the extreme importance of organic CTR for rankings.
During SMX (Search Marketing Expo) West 2016, Paul Haahr, software engineer at Google, presented how Google algorithm works from an engineering perspective.
In the slide above, Haahr shows that it is “bad” if users don’t click on a search result. He explains that Google runs A/B tests on real traffic and to check changes in click patterns:
We run a lot of experiments. It is very rare if you do a search on Google and you're not in at least one experiment.
In March 2015, Danny Sullivan, Google's public search liaison, Tweeted that Google uses CTR as a ranking signal.
It’s finally clear that click-through-rate leads to higher rankings and more traffic.
The bottom line is you want your website to generate rich snippets, because they are a key element for SEO.
The drawback of rich snippets: the zero-click search
Sometimes, Google uses rich snippets to match and satisfy users’ intent without the need of clicking any search results.
The prominence of mobile search and the raising of voice search have moved users’ needs towards short and practical answers.
In 2019, Rand Fishkin, CEO and co-founder of SEOmoz, assembled Jumpshot’s clickstream data and discovered that organic CTR has dropped to 47.4%.
In the first quarter of 2019, 48.96% of all US Google searches captured by Jumpshot ended without a click.
Google doesn’t need structured data to generate rich results. In fact, it can pull information from your web page, re-elaborate them and put them back together in what Fishkin calls “aggressive SERP features and instant answers”.
Usually, zero-click searches include:
Database-related searches. When you search queries on dates, time and time zones, currency conversions, age and names of people and products…;
Dictionary and encyclopedia-related searches. When you use terms like “what is” and “definition of” in the search;
Map direction-related searches. When your search queries include words that prompt local results like “near me”, “vegan restaurant” and so on.
Despite rich snippets are commonly recognized as an opportunity to drive more new visitors and visibility, you lose traffic when users settle for the information found in the SERP.
The challenge for an SEO specialist is to be featured in the SERP with rich snippets that don’t provide a complete solution. In this way, users will have to visit your page to attain the information they need.
FREE SCHEMA MARKUP GENERATORS
If you want an easy and fast solution to add Schema markups on your website, I’ll show you some free tools I use to generate structured data.
Regardless of which tool you use, you will generate pretty much standardized markups. If you want to learn how to write tailored Schema markups in JSON-LD, skip this chapter.
Schema markup generator (JSON-LD) by Merkel
Schema Markup Generator (JSON-LD) is the free tool I prefer to create basic structured data. This tool was created by Max Prin, head of TechnicalSEO at Merkel Inc.
Through a drop down menu, you can choose a markup and input relevant data in an easy-to-use form.
They offer Microdata or JSON-LD Schema markups for many applications, including:
Three reasons why you should use TechnicalSEO schema markup generator
It is totally free and foolproof;
It allows you to directly test the code on Google Structured Data Testing Tool or Rich Results Test;
It doesn’t require any coding expertise and allows you to handle structured data autonomously without bothering a developer.
You can play around with this tool and when you are ready to add more personalization to your JSON-LD, you should try to make your own code using the official documentation on schema.org.
Structured Data Markup Helper by Google
Structured Data Markup Helper is Google's webmaster tool that allows you to visualize a web page and directly tag elements through a special editor.
When you are done tagging, Google generates the appropriate Schema markups and inserts them into the page’s HTML that you can download and re-upload into your website.
Select the type of structured data you want to generate. You can start with an URL or HTML code.
In the second step, Google replicates the page in its editor which you can use to tag relevant elements.
In the third and final step, Google replicates the page’s HTML with the new Schema markups included.
Download the code and re-upload it into your website accordingly.
Data Highlighter by Google
If you want to create structured data for yourself or for a website you own, I recommend to use Data Highlighter by Google.
This free SEO tool is part of Google Search Console and works almost like the Structured Data Markup Helper.
The main difference is that Data Highlighter directly installs in your website’s code the Schema markups.
In fact, if you check the upper right corner of the editor, you will find a button to publish the edits.
Data Highlighter also allows you to save your work in progress and store all of your pages with highlighted data.
In this way, you can always review and update your work or save a draft and finish it later.
HOW TO USE SCHEMA.ORG
From the homepage of schema.org, reach the section “Schemas” by using the menu in the header.
On this page, you can:
Select the most common Schema markups;
View the full markups list;
Use the search bar in the header to find the exact markup you are looking for.
Let’s say you want to add an Organization markup. As you can see from the image below, the documentation shows you three columns.
The first column is a list of properties from the application selected. As we said, in this example we picked the application Organization. A property provides additional information to describe an application.
This list is in alphabetical order.
The second column indicates what you should write in the code for each property.
For example, when you add the property address, you can simply use a string of text to specify the address of your organization or use an expected type called PostalAddress.
Let’s say your organization is the Art Museum of Philadelphia, your address will be: “2600 Benjamin Franklin Pkwy, Philadelphia, PA 19130”.
If you see a “special” clickable element (expected type) in the second column, it means you can include an additional type to your markup.
When you create Schema structured data, you should be as specific as possible, so always use expected types when possible.
For instance, instead of associating just a string of text to the address property, click on PostalAddress to view its reference page and add more properties.
As you can see, this page is very similar to the previous one, but it is about the type PostalAddress.
Here, you can find all the “sub-properties” you can use to describe the main property address.
At the end of the Organization page, you can find a list of Schema markup examples that you can use as a reference to write the actual code.
7-STEP STRUCTURED DATA WORKFLOW
In this chapter, I’ve described the workflow I use when I create personalized Schema structured data. You can use it as a brief handbook to smooth your SEO process.
Step 1: select a Schema application
According to your SEO needs, select one or more Schema applications for each web page.
To help you decide, just answer these two questions:
What rich snippet do you want to generate?;
What does search engines need to know to interpret the page correctly?.
I’ve listed below some of the most common Schema applications.
Review markup. It displays a star rating with a scale from 1 to 5 that can represent a single reviewer or an average of multiple users’ reviews (aggregate rating).
Product markup. It gives information about a certain product and includes images, price and availability.
Recipe markup. It displays information about the time to prepare a dish, reviews and recipe images.
Event markup. It shows events’ dates, times, location and more.
Organization markup. It helps search engines understand key information about a business, like address, logo and contacts.
Music markup. It helps Google index music by providing info on genre, album, release dates, lyrics and so on.
Video markup. Search engines can’t understand images, so they need structured data to interpret videos.
Top stories markup. It gives a website the opportunity of appearing in the “Top Stories” box in the search results and it only applies to Google News’s approved websites.
Step 2: find the related documentation on schema.org
Once you know the Schema applications to insert in your website, go on schema.org and use the search bar to find it.
Step 3: identify what properties you need to describe your Schema application
Go over the list in the first column and write down the properties that you need to describe your application.
Do the same with the expected types if any (“sub-properties”).
Step 4: start from the examples to generate your JSON-LD
Use the examples at the end of the page as a starting point to generate your JSON-LD structured data.
Step 5: validate your code
Copy and paste your JSON-LD in Google Structured Data Testing Tool and verify it doesn’t have errors.
Step 6: insert the JSON-LD markup in your web page HTML
According to Google documentation, you should insert JSON-LD Schema markups in the head section of your web page.
When you insert these kind of codes, you usually have two options (above all, if you use website builders like Wix):
Load the code once;
Load on each new page.
Choose to load the code once.