Schema markup is code that helps search engines to understand your content and better represent it in the search results.
You’ve probably already encountered marked-up content in the form of rich snippets:
But schema markup can do more than that and help your SEO in other ways.
In this guide, you’ll learn:
Why schema markup is important
Schema markup powers rich snippets, which often have higher clickthrough rates than ‘regular’ search results. That means more traffic to your site.
However, the primary function of the markup is to help search engines better understand your content.
It’s no coincidence that schema.org, the community behind the markup, was created a year before Google’s Knowledge Graph—a knowledge base of entities and the relationships between them—came to life.
And you guessed it, one of the primary sources for this data is the schema markup.
All the edges connecting the nodes above represent real schema markup properties.
This is where we get to the heart of the matter.
Providing easy-to-read information and connecting the dots about you, your company, products and content benefits everyone involved:
- Google understands it much better than plain text.
- Users get more relevant search results.
- Website owners get rich snippets and can become an entity in the Knowledge Graph.
Being included in the Knowledge Graph provides excellent branding opportunities in the SERP.
First, you can get a Knowledge Panel when people search for your brand:
Second, your brand can appear as a relevant solution for some non-branded queries:
In the bigger picture, schema markup is a crucial part of structured data that makes the semantic web and search possible. In layman’s terms, it allows URLs to convey the actual meaning of their content to machines like the Googlebot.
How to approach schema markup
I’ll give it to you straight: If you’re an SEO beginner, forget about schema for now. Countless other SEO tasks will be much more impactful.
You only need to consider schema if one or both of these things are true:
- Your pages already rank well, and the content is eligible for rich results (more on that later).
- You already have a strong brand presence that can help establish your entity in the Knowledge Graph.
If that’s you, here’s how to get started with your schema journey:
Get familiar with schema.org
Schema.org is your point of reference here. It might be a bit confusing and overwhelming if you’re new to this, so let me simplify how it works.
The schema consists of a two-level hierarchy system. At the top, you have types, and each type has a set of defined properties.
Types categorize the content block that you’re marking up. Its properties then describe the content.
For example, here’s some very simple markup about myself that would fit on my author page:
This would deliver the information already on my author page to Google on a silver platter.
Two important things to notice in the code here:
- You can declare multiple types at once. Even though the main type here is “Person,” we can also use the type “Organization” for the property “worksFor” to convey information about my employer.
- A lot of properties can be used for multiple types. In the example above, it’s the property “name” that’s used both for the “Person” (Michal Pecánek) and the “Organization” (Ahrefs).
Here’s a list of schema to begin with. Click through the most common types and check their properties, what they look like, all the options, etc.
You’ll find out that there are a lot of interconnected things. For example, if Ahrefs bought Alphabet, we’d be able to declare it as our subOrganization:
And Alphabet could use the inverse-property and have Ahrefs as “parentOrganization” on their website.
Choose markup that has the most impact
Don’t worry, there’s no need to check hundreds of types and properties. I just wanted you to get acquainted with the schema.org website.
As we already discussed, rich snippets markup has the most significant impact in the shortest time, but only if you have content already ranking on the first page. On top of that, only a few schema types and properties can help you win rich snippets.
Google lists these and provides necessary documentation, but you may not end up pursuing any. We at Ahrefs don’t use schema for rich snippets because there’s not much we can and want to mark up for this purpose.
The most common rich snippet content types include:
If any of these are something you may use on your website, check our dedicated post on getting rich snippets. For now, we’ll move onto the long-term aspect of the markup—being a Knowledge Graph entity.
You’ll almost certainly be interested in Organization and Person schema types, but the rest depends on your business and website.
I already showed you basic Person markup so let’s shift the focus to Organization now. This is our Organization schema:
It’s a bit longer but still fairly basic. Again, there are two things worth emphasizing.
First, the “sameAs” property refers to URLs that contain the same entity. It’s one of the most important properties to help build connections in the Knowledge Graph.
I highly recommend linking your social and company profiles. Besides Wikipedia and Wikidata, Google also sources Knowledge Graph data from LinkedIn and Crunchbase. If your company is public, it’s well worth including links to profiles on Bloomberg, Yahoo Finance, and similar prominent websites.
Second, make sure that information about your entity on the web is consistent and unified. Not paying attention to this could lead to Google storing the wrong information about your entity, making it difficult to get included in the Knowledge Graph.
So make sure to get the basics right before playing around with advanced schema markup.
How to implement schema markup
Many SEOs find schema markup daunting because it’s so code-heavy, but there’s no need to be afraid. It’s relatively easy to understand once you grasp the basics.
So let’s explore how to implement schema markup on your site:
- Generate the markup
- Test your code first
- Deploy the code on your website
1. Generate the markup
It’s entirely possible to write schema markup yourself, but often, there’s no need. If you’re using WordPress, there are plenty of plugins that make life easy. If not, there are countless markup generators. I like the one from Merkle and the Schema Builder extension, but there are many options. Keep in mind that these generators usually only cover basic markup. To go beyond that, you’ll have to adjust the code yourself.
All code examples here use the JSON-LD format, which is recommended by Google. It’s also the easiest to understand and deploy.
However, you will still frequently encounter another format called Microdata because CMS’ and their plugins often use it. The only other acceptable format is RDFa as an extension to HTML5, but I’ve never seen that in action.
2. Test your code first
Unless you’re using a CMS or plugin where you interact via a UI, you should always test your markup before pushing it to production.
For this, Google has developed two easy-to-use testing tools.
There’s a general structured data testing tool. This is still usable at the time of writing (August 2020), but it will be deprecated in the future.
The new standard is the rich results test tool. As the name suggests, it focuses on rich results, which leaves out the vast majority of the schema.org vocabulary. If you’re testing a code snippet or a page without markup that triggers rich snippets, it won’t show you the schema tree as the former does:
The rich results test tool also doesn’t show errors if you misuse schema types or properties:
For these reasons, I recommend validating your markup in both tools while you still can.
3. Deploy the code on your website
This step will differ depending on your website and tagging system. As I already mentioned, we’re talking JSON-LD here as the recommended schema format.
We’ll go through these three implementation methods:
Straight into the HTML
JSON-LD schema is formatted as a script that’s placed into the
or of your HTML.
If you’re not the webmaster, talk to your developers and agree on how to assign this task to them. This will likely include mapping URLs or their categories to different schemas and highlighting static and dynamic values (think brand vs. price for product schema).
Using Google Tag Manager
This is especially good for marketers who are comfortable working with GTM. It’s an excellent workaround for companies where it takes a long time to get SEO changes implemented by the development team.
I can only recommend this method if you’re already using GTM to manage your marketing technology stack. Just paste the created schema as a custom HTML tag and set up the trigger based on a page view to a specific page or pages.
Using a CMS and plugins
This is the most common and beginner-friendly way to deploy schema markup. But due to the number of different CMS and plugins, it can also be the most confusing one.
There’s no CMS or plugin that does all the work for you. If you require a more advanced schema markup, you’ll inevitably have to combine the available options. That can also involve adjusting your themes and templates, or injecting the code on a page directly or via GTM.
Let’s look at how to implement common schema types using a few popular WordPress SEO plugins.
You should only use one all-in-one SEO plugin like Yoast, RankMath, or The SEO Framework. Using two or more will likely cause issues. If your plugin doesn’t suit all your schema needs, use a dedicated schema plugin on top of that.
1. Organization schema with Yoast
In the Search Appearance settings under the General tab, filling in the following:
Then provide links to your social and company profiles in the social settings:
That’s it. You’re done. Your organization will now appear as a publisher of your articles, or as another property depending on the page type.
2. Product schema with Rank Math
Rank Math seems to offer the most schema options out of all the well-known free SEO plugins. You can set up basic schema markup like Organization and Person in the plugin settings. But if we go beyond that, it also lets you add schema to specific pages.
Just head to a page or post, click the plugin button, choose your schema type and fill in the information.
Here’s an example of adding product schema to a page:
3. VideoObject schema with Schema & Structured Data for WP & AMP
This is one of those dedicated schema plugins. For some types of schema, it can even fetch data from your page automatically and populate some of the boxes.
Here’s what happens when I embed a YouTube video into a WordPress page with the plugin activated:
And if you check the tabs on the left, there’s an option to paste custom JSON-LD schema into the page.
But what about other CMS’? Well, the options are more limited.
Shopify supports schema markup with some out of the box themes and apps like SEO Manager or JSON-LD for SEO. Squarespace can populate some very basic markup from your settings. And Wix straight up relies on you pasting the code there:
As you can see, there’s no one-fits-all solution here. It depends on your requirements, your CMS, and your technical limitations.
Now the implementation is out of the way, let’s talk about monitoring.
How to monitor your schema markup
Google Search Console shows all detected markup types under the Enhancements tab:
Click on a specific schema type to see the report:
If you validated the markup before implementing, you shouldn’t run into problems here. It’s also worth noting that there are required properties for some schema types that may trigger errors if missing. These are often negligible, so don’t worry about them too much or prioritize fixes.
Schema markup looks scarier than it actually is. Most websites can mark up their content quickly and easily.
Adding markup to your pages not only helps stand out in the SERPs with rich snippets, but it also contributes to making the web truly linked. And a happy byproduct of that is often the inclusion of your brand in the Knowledge Graph, which has many other benefits.
If you have any questions or remarks, feel free to ping me on Twitter.