Skip to main content
Beta: Front-End Checklist is currently in beta. Some issues are still being fixed. Thanks for your patience.
SEOMedium

Add FAQPage schema markup

Validates FAQPage JSON-LD structured data for question-and-answer content

Utilities
Quick take
Typical fix time 10 min
  • Add `FAQPage` JSON-LD with `mainEntity` question/answer pairs to pages that contain FAQ sections
  • Each `Question` must include `acceptedAnswer` with an `Answer` type containing the `text` property
  • Only use FAQPage schema when the page actually contains FAQ-style question-and-answer content visible to users
Why it matters: 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.

Rule Details

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:

PropertyRequiredType
@typeYes"FAQPage"
mainEntityYesArray of Question
Question.nameYesString (the question)
Question.acceptedAnswerYesAnswer object
Answer.textYesString (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 (opens in new tab) 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.

Use with AI

Copy these prompts to use with your AI assistant, or install the MCP server to use directly from Claude, Cursor, or Windsurf.

Check

Verify implementation

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

Auto-fix issues

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>`: ```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 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

Learn more

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.

Review

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.

Sources

References used to support the guidance in this rule.

Further Reading

Tools and supplementary material for exploring the topic in more depth.

Cómo agregar lenguaje de marcado a tus páginas de preguntas frecuentes con datos estructurados | Central de la Búsqueda de Google  |  Documentation  |  Google for Developers

Cuando usas datos estructurados de Preguntas frecuentes, puedes ayudar a los usuarios a descubrir información en un resultado enriquecido. Obtén información sob…

Google for DevelopersGuide
FAQPage - Schema.org Type

Schema.org Type: FAQPage - A <a class="localLink" href="/FAQPage">FAQPage</a> is a <a class="localLink" href="/WebPage">WebPage</a> presenting one or more "<a h…

schema.orgSpec

Rules that often go hand-in-hand with this one.

Use valid JSON-LD structured data

Validates JSON-LD structured data for syntax correctness, required properties, and schema.org compliance

SEO
Add structured data markup

Schema.org structured data (JSON-LD) is implemented for rich search results.

SEO
Implement valid Article structured data

Validates that articles use the correct Schema.org properties for improved search visibility.

SEO
Implement comprehensive author markup

Uses structured data to provide machine-readable metadata about content authors.

SEO

Was this rule helpful?

Your feedback helps improve rule quality. This stays internal for now.

Loading feedback...
0 / 385