This post is all about one of my favorite SEO tools and strategies out there: FAQ Schema. As a website owner or marketer, any time you have a page that provides information about a specific topic (i.e. type of product category, neighborhood, specific industry) you should be developing FAQs and including them on the page with FAQ Schema Markup.
Schema is a form of markup that you add to a website to help search engines like Google index specific pieces of data that they then use for display in Google Search as “rich results.”
FAQ Schema is a way to markup your typical frequently asked questions section so that it displays in Google Search like this:
Google will crawl your page, find your FAQ schema, and then display it as expandable cards underneath your search result.
At its core, FAQ schema – along with all schema – very deliberately catalogs information for Google so that they can display it in search results. Just because you set up schema on a page doesn’t mean that Google is going to utilize it. In some cases, Google might index your schema and choose not to show it in their search results.
Specifically, the FAQ schema provides markup for FAQ questions and FAQ answers so that Google can easily index them as such. If your schema is properly structured, then end result will be a nice, expandable box of your FAQs displaying below your search result.
With changes to the Google’s search algorithm, like BERT, and additional changes on content quality and E-A-T guidelines, being able to answer people’s questions about a topic is a great way to improve your SEO.
FAQs are some of the best ways to structure information on your site. Users like it because it allows them to quickly scan a web page for the info they’re looking for and easily get an answer. Search engines like it because it lays out your site’s information in a very easy to understand way. Search engines can quickly relate answers to questions, questions to topics, and topics to search queries.
The other benefit is that it allows you to occupy more real estate on the search results page. If you remember authorship from a few years ago, FAQ schema is similar. By simply marking up your web page with FAQ schema, you get a nice rich result with expandable questions and answers that can provide links to important pages on your site. Not only do you have a bigger search result, but you also look like a vetted expert on the topic.
The process of generating and adding your FAQ schema is relatively simple. To add schema to a web page, you can either add in via HTML markup (also called Microdata) or as JSON-LD script.
Google has stated that they prefer JSON-LD format for all schema, so I recommend utilizing that format, but if that’s not an option, Microdata HTML will work in a pinch.
The easiest way to structure your schema is to utilize JSON-LD. Even with little to no web design experience or coding knowledge, you can easily copy and past your questions and answers into the JSON-LD script. Here’s the basic format:
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": { "@type": "Question", "name": "YOUR QUESTION HERE", "acceptedAnswer": { "@type": "Answer", "text": "YOUR ANSWER HERE" } } },{ "@type": "Question", "name": "YOUR QUESTION HERE", "acceptedAnswer": { "@type": "Answer", "text": "YOUR ANSWER HERE" } },{ "@type": "Question", "name": "YOUR QUESTION HERE", "acceptedAnswer": { "@type": "Answer", "text": "YOUR ANSWER HERE" } }] } </script>
Above, you can clearly see the spots where you would add in your question and the subsequent answers. If you need to add more FAQs, you would just copy everything from the ,{ to the } after “text”: “YOUR ANSWER HERE” line and paste it in before the closing ].
You can then test your FAQ schema using Google’s Structured Data Testing Tool.
Once your schema is crawled without errors, you can then add it to your web page.
For JSON-LD, the easiest implementation is to simply copy the whole script and paste it in at the bottom of your page’s HTML. To do this, you’ll need to be able to add in HTML either via a WYSIWYG editor or through FTP.
Once it’s added, you won’t see the script on the front end, but you’ll be able to test the URL at the Structured Data Testing Tool.
Microdata HTML is another format to add schema to a web page. The benefit of Microdata is that you can wrap existing FAQ content on your page with HTML tags that will “tag” that content as part of the FAQ Schema. Here’s an example of FAQ schema HTML Microdata:
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <h3 itemprop="name">What is the policy for late/non-delivery of items ordered online?</h3> <div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <div itemprop="text"> Our local teams work diligently to make sure that your order arrives on time, within our normal delivery hours of 9AM to 8PM in the recipient's time zone. During busy holiday periods like Christmas, Valentine's and Mother's Day, we may extend our delivery hours before 9AM and after 8PM to ensure that all gifts are delivered on time. If for any reason your gift does not arrive on time, our dedicated Customer Service agents will do everything they can to help successfully resolve your issue. <br/> <p><a href="https://example.com/orders/">Click here</a> to complete the form with your order-related question(s).</p> </div> </div> </div>
As you can see above, the question and answer are both wrapped in HTML divs that tell search engines, “Hey, this is an FAQ question,” or “hey, this is an FAQ answer.”
Here’s the basic structure:
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <div itemprop="name">YOUR QUESTION HERE</div> <div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <div itemprop="text">YOUR ANSWER HERE</div> </div> </div>
For your question and answer divs, you can change them out for other HTML elements like H1’s, H2’s, H3’s and p’s like this:
<div itemscope itemprop="mainEntity" itemtype="https://schema.org/Question"> <h2 itemprop="name">YOUR QUESTION HERE</h2> <div itemscope itemprop="acceptedAnswer" itemtype="https://schema.org/Answer"> <p itemprop="text">YOUR ANSWER HERE</p> </div> </div>
This way, you can pull in font styles into your Microdata schema markup.
Once you’ve got your Microdata markup added to the page, you can then test it using the Structured Data Testing Tool.
FAQ Schema rich results allow you to include links in your answers. Here’s how you do it.
For the Microdata HTML markup format, simply add links the same way you would in your HTML. Those links will be recognized as part of the schema, indexed, and displayed by Google. No need to apply a different methodology with Microdata.
For JSON-LD, you can’t utilize the double quotation “ in Javascript. If you typical HTML links in the answer text, you’ll cause the JSON-LD code to break. Instead of using double quotations, you need to use single quotation marks ‘ for including links in the answer section. Here’s an example of what it will look like:
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": { "@type": "How do I add a link in JSON-LD?", "name": "YOUR QUESTION HERE", "acceptedAnswer": { "@type": "Answer", "text": "Adding a link is easy, just follow <a href='https://cjgalis.com'>this helpful guide</a>." } }] } </script>
Any time you have unique information about a specific topic, it is a good idea to add in FAQ schema for that page. If you’re following SEO best practices, you should already be answering people’s questions about the topic on the page. To include FAQ schema, you should structure your content like an FAQ page (sort of like this one) and then add in FAQ schema when appropriate.
There are a few rules when utilizing FAQ schema:
If you need guidance and help with setting up schema, you can get in touch with me here. Otherwise, feel free to review the following resources:
Once fundamental SEO is in place, the process of ongoing content updates will help you…
The idea of "good SEO" differs from business to business. The simplest answer is if…