
Faq
- 1 installs
- 73.4k repo stars
- Updated June 18, 2026
- thedaviddias/frontendchecklist
Adds and validates FAQPage JSON-LD with question/answer pairs on pages that show visible FAQ content, for rich results.
About
A frontend-checklist SEO rule for adding FAQPage structured data. A developer uses it to earn expandable Q&A rich results and more SERP real estate.
- Add FAQPage JSON-LD with mainEntity question/answer pairs
- Only use it when visible FAQ content exists on the page
Faq by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,710 of 1,879 Marketing & SEO skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/thedaviddias/frontendchecklist --skill faqAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 73.4k |
| Last updated | June 18, 2026 |
| Repository | thedaviddias/frontendchecklist ↗ |
What it does
Adds and validates FAQPage JSON-LD with question/answer pairs on pages that show visible FAQ content, for rich results.
Files
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
1. Identify pages with FAQ-style content (a section of questions and answers visible to users). 2. 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."
}
}
]
}3. Validate the markup using Google's Rich Results Test at https://search.google.com/test/rich-results. 4. 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.
Rule page: https://frontendchecklist.io/en/rules/seo/faq
Add FAQPage schema markup
Validates FAQPage JSON-LD structured data for question-and-answer content
Priority: medium · Difficulty: intermediate · Time: 10 min
--- FAQPage structured data tells Google that a page contains question-and-answer content. When valid, it can generate rich results in search with expandable Q&A pairs displayed directly in the SERP.
Code Examples
#
❌ Avoid — FAQ content with no structured data
<section>
<h2>Frequently Asked Questions</h2>
<h3>How do I reset my password?</h3>
<p>Click 'Forgot password' on the login page...</p>
<!-- No JSON-LD; Google cannot generate FAQ rich results -->
</section>❌ Avoid — invalid schema (missing acceptedAnswer)
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How do I reset my password?"
// Missing acceptedAnswer — schema is invalid
}
]
}✅ Correct — valid FAQPage JSON-LD
<script type="application/ld+json">
{
"@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 registered email address. You will receive a reset link within 5 minutes."
}
},
{
"@type": "Question",
"name": "What payment methods do you accept?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept Visa, Mastercard, American Express, PayPal, and bank transfers. All payments are processed securely via Stripe."
}
}
]
}
</script>✅ Dynamic generation in Next.js
// Generate FAQPage JSON-LD from your content
const faqSchema = {
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: faqs.map(faq => ({
'@type': 'Question',
name: faq.question,
acceptedAnswer: {
'@type': 'Answer',
text: faq.answer,
},
})),
}
// In your component
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(faqSchema) }}
/>Why It Matters
- Rich results: FAQPage schema can trigger expandable question/answer pairs in search results, significantly increasing your visible SERP real estate.
- Click-through rate: Q&A rich results display below your standard search snippet, offering users more information before clicking — often increasing CTR.
- Voice search: FAQ-style answers are a common source for voice search responses.
Required Structure
Google requires these properties for FAQPage rich results:
| Property | Required | Type |
|---|---|---|
@type | Yes | "FAQPage" |
mainEntity | Yes | Array of Question |
Question.name | Yes | String (the question) |
Question.acceptedAnswer | Yes | Answer object |
Answer.text | Yes | String (the answer) |
Important Constraints
- Only add FAQPage schema when the page genuinely contains visible FAQ content.
- Do not add FAQPage schema to pages where Q&A is behind a tab, accordion hidden from initial load, or requires interaction — Google must be able to see the content.
- Do not use FAQPage for advertising purposes or to answer questions that are not genuinely asked by users.
- Validate with the Rich Results Test before deploying.
Exceptions
- Only add or enforce schema types that the page can truthfully support; irrelevant structured data is worse than no structured data.
- A technically valid schema block can still be misleading if the page content does not visibly back it up; audit rendered content and schema together.
- If indexability, canonical-url, or main content quality is wrong, fix that foundation before optimizing schema details.
Standards
- Use these references as the standard for the final search-facing HTML, metadata, and crawl behavior.
- Check the implementation against Google Search Central: FAQPage structured data before treating the rule as satisfied.
- Check the implementation against Schema.org: FAQPage before treating the rule as satisfied.
Verification
Automated Checks
- Inspect rendered HTML and HTTP headers to confirm the expected metadata or crawlability signal is present.
- Test the affected URL with Google Search Console or equivalent tooling where relevant.
- Re-crawl a representative page set after deployment.
Manual Checks
- Confirm the change does not create conflicting canonical-url, robots, or structured-data signals.