FAQ Structured Data: Complete Implementation Guide
FAQPage structured data allows you to mark up frequently asked questions and their answers so that Google can display them as expandable rich results directly in search. When implemented correctly, FAQ rich results show a series of collapsible question-and-answer pairs beneath your standard search listing, substantially increasing the visual real estate your page occupies in search results. This schema type is one of the most widely used and accessible forms of structured data, suitable for any page that contains a genuine list of commonly asked questions — from product pages and service descriptions to informational articles and support documentation.
Why Use FAQPage Schema?
- Expands your search result listing with collapsible Q&A pairs, increasing your visual presence on the search results page and pushing competitors further down.
- Improves click-through rates by giving users immediate, useful answers while encouraging them to visit your page for more detailed information.
- Relatively straightforward to implement compared to other structured data types, making it an excellent starting point for sites new to schema markup.
- Can be applied to a wide variety of page types including product pages, service pages, blog posts, and dedicated FAQ sections.
- Enhances voice search compatibility, as search engines may use FAQ structured data to source answers for voice assistant responses.
Required Properties
These properties are required by Google for FAQPage structured data to be eligible for rich results.
| Property | Description |
|---|---|
| @type | Must be set to 'FAQPage' for the top-level object. Identifies the page as containing FAQ content. |
| mainEntity | An array of Question objects representing each FAQ entry. This is the core property that contains all the question-and-answer pairs on the page. |
| Question.name | The full text of the question being asked. Each Question object within mainEntity must include this property. |
| Question.acceptedAnswer | An Answer object containing the 'text' property with the complete answer to the question. Each question must have exactly one accepted answer. |
Recommended Properties
Adding these properties improves your chances of appearing in rich results and provides more context to search engines.
| Property | Description |
|---|---|
| Answer.text | The full answer text. May include basic HTML formatting such as <p>, <a>, <b>, <ul>, and <ol> tags. Links included here may appear in the rich result. |
| url | The canonical URL of the FAQ page. While not strictly required, including it helps search engines resolve the correct page when FAQ content appears on multiple URLs. |
| name | The title of the FAQ page or section. Provides additional context about the overall topic of the FAQ content. |
JSON-LD Example
Here is a complete FAQPage structured data example you can use as a starting point. Or use our FAQPage generator to create one automatically.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is structured data and why does it matter for SEO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Structured data is a standardised format for providing information about a page and classifying its content. It uses vocabulary from <a href=\"https://schema.org\">Schema.org</a> to help search engines understand your pages more effectively. For SEO, structured data can trigger rich results — enhanced search listings that include star ratings, images, FAQs, and other visual elements — which typically achieve higher click-through rates than standard blue link results."
}
},
{
"@type": "Question",
"name": "How do I add FAQ structured data to my website?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The recommended approach is to add a JSON-LD script block to your HTML page. Place a <script type=\"application/ld+json\"> tag in the <head> or <body> of your page containing a FAQPage object with your questions and answers structured as an array within the mainEntity property. Each question should be a Question object with a name (the question) and acceptedAnswer (an Answer object with the answer text)."
}
},
{
"@type": "Question",
"name": "Can I use FAQ structured data on any page?",
"acceptedAnswer": {
"@type": "Answer",
"text": "FAQ structured data should only be used on pages where the primary content includes a list of questions and answers that the page author has written. It should not be used on forum pages where users submit questions, nor on pages with a single question — use QAPage markup for those instead. The questions and answers must be visible on the page."
}
},
{
"@type": "Question",
"name": "Is there a limit to how many FAQs I can mark up?",
"acceptedAnswer": {
"@type": "Answer",
"text": "There is no hard limit set by Google on the number of FAQ items you can include. However, Google typically displays a maximum of two to four questions in the rich result, with a 'Show more' link for additional entries. Include all genuine FAQs on the page, but prioritise quality over quantity."
}
},
{
"@type": "Question",
"name": "Do FAQ rich results still appear in Google Search?",
"acceptedAnswer": {
"@type": "Answer",
"text": "As of 2023, Google reduced the frequency of FAQ rich results, limiting them primarily to well-known, authoritative government and health websites. However, implementing the markup remains worthwhile as Google may expand eligibility in the future, and the structured data still helps search engines understand your content."
}
}
]
}
</script>How to Implement FAQPage Schema
- 1Audit your site for pages that contain genuine FAQ content — questions and answers written by the site owner or editorial team. Do not use FAQ markup for user-generated Q&A or forum content.
- 2Ensure all FAQ content is visible on the page. Google requires that every question and answer in the structured data is also present in the on-page content. Hidden or accordion-style content is acceptable as long as it is in the HTML source.
- 3Create a JSON-LD script block and set the @type to 'FAQPage'. Add each question-and-answer pair as a Question object within the mainEntity array.
- 4For each Question, set 'name' to the question text and nest an Answer object within 'acceptedAnswer' containing the answer in the 'text' property. You may include basic HTML in the answer text for formatting and links.
- 5Place the JSON-LD script in the <head> or <body> of your HTML. If your site uses a CMS, consider using a plugin or template modification to generate FAQ markup dynamically from your content.
- 6Validate the markup using Google's Rich Results Test, then monitor performance in Google Search Console under the FAQ enhancements report to track impressions and identify any issues.
Common Mistakes to Avoid
- Using FAQPage markup for content that is not genuinely in a question-and-answer format, or fabricating questions solely to gain rich results rather than addressing real user queries.
- Including questions and answers in the structured data that are not visible on the page. Google requires a one-to-one match between markup and on-page content.
- Confusing FAQPage with QAPage — FAQPage is for author-written FAQ content, while QAPage is for pages where users submit questions and other users provide answers (e.g., Stack Overflow-style forums).
- Using FAQ markup on every page of the site, including pages where FAQ content is not the primary focus. Overuse can dilute the signal and may be flagged as spammy by search engines.
- Forgetting to include HTML formatting in the Answer.text property when answers contain links, lists, or emphasis. Plain text answers miss the opportunity to include clickable links in the rich result.
Testing & Validation
Before deploying your FAQPage structured data, validate it using these tools:
- 1Google Rich Results Test — Paste your page URL or code snippet to check if your structured data is eligible for rich results.
- 2Schema Markup Validator — Validates your JSON-LD syntax against the schema.org specification.
- 3Google Search Console — After deployment, monitor the Enhancements report for any errors or warnings.
Frequently Asked Questions
Are FAQ rich results still available for all websites?
Since August 2023, Google has significantly limited FAQ rich results, primarily showing them for well-known government and health authority websites. However, the FAQPage markup still helps search engines understand your content structure, and eligibility criteria may change in the future. It remains a best practice to implement the markup on genuine FAQ content.
What is the difference between FAQPage and QAPage structured data?
FAQPage is for pages where the site owner has written both the questions and answers — typical FAQ sections. QAPage is for community-driven content where one user asks a question and other users provide answers, such as forums and Q&A platforms. Using the wrong type may result in Google ignoring the markup entirely.
Can I include links within FAQ answers?
Yes. The Answer text property supports basic HTML including anchor tags (<a>), bold (<b>), italic (<i>), and list tags (<ul>, <ol>, <li>). Links included in the answer may appear as clickable links within the FAQ rich result, providing an additional navigation path for users.
Should I put FAQ structured data in the head or body of the page?
JSON-LD structured data can be placed in either the <head> or <body> of your HTML document. Google will process it from either location. Placing it in the <head> is a common convention, but placing it near the corresponding visible content in the <body> can make maintenance easier.
How many FAQs should I include on a single page?
Include as many genuine FAQs as are relevant to the page's topic. Google typically displays two to four in the rich result snippet. Focus on quality — ensure each question addresses a real user query and each answer provides a thorough, helpful response. Padding with low-value questions can reduce the overall quality signal.
Ready to Generate Your FAQPage Schema?
Use our free generator to create valid FAQPage structured data in seconds.
Open FAQPage Generator