faq
// Use when adding FAQ sections to landing pages or blog posts, generating FAQPage JSON-LD from existing Q&A content, or validating that structured data on pages with FAQ sections is syntactically and semantically correct.
Add FAQPage schema markup
Valid FAQPage structured data can generate rich results in Google Search, displaying expandable question-and-answer pairs directly in the SERP. This increases click-through rate and SERP real estate without requiring a higher ranking position.
Quick Reference
- Add
FAQPageJSON-LD withmainEntityquestion/answer pairs to pages that contain FAQ sections - Each
Questionmust includeacceptedAnswerwith anAnswertype containing thetextproperty - Only use FAQPage schema when the page actually contains FAQ-style question-and-answer content visible to users
Check
Check pages that contain FAQ or Q&A sections. For each: (1) Is there a <script type="application/ld+json"> block with "@type": "FAQPage"? (2) Does it include a mainEntity array of Question objects? (3) Does each Question have a name (the question text) and an acceptedAnswer with "@type": "Answer" and a text property? (4) Does the schema content match what is visible on the page?
Fix
- Identify pages with FAQ-style content (a section of questions and answers visible to users).
- Add a JSON-LD script to the page
<head>or<body>:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How do I reset my password?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Click 'Forgot password' on the login page and enter your email address. You will receive a reset link within 5 minutes."
}
}
]
}
- Validate the markup using Google's Rich Results Test at https://search.google.com/test/rich-results.
- Ensure every question in the schema has a corresponding visible answer on the page.
Explain
FAQPage structured data enables Google to display expandable Q&A pairs directly in search results as a rich result. This increases the page's visible footprint in the SERP and can improve click-through rate. Invalid or mismatched schema (questions in markup not visible on page) will cause Google to ignore it and may trigger a manual action.
Code Review
Parse all <script type="application/ld+json"> blocks. Find any with "@type": "FAQPage". Validate that mainEntity is an array, each item has "@type": "Question", name is a non-empty string, and acceptedAnswer is an object with "@type": "Answer" and a non-empty text. Cross-reference each question in the schema against visible question elements on the page.
For full implementation details, code examples, and framework-specific guidance,
see references/rule.md.