FAQPage schema audit - make your FAQ AI-citable
FAQPage schema is the single highest-ROI structured data signal for AI citation. It maps your question-answer pairs directly into the format AI Overviews, Perplexity, and Bing Copilot use when sourcing answers. Most sites get it wrong in one of three ways - a silent error that disqualifies the whole block. This page explains what correct looks like, gives you a copy-paste template, and shows the mistakes to avoid.
What FAQPage schema is and why it matters
FAQPage schema is a JSON-LD block placed in a page’s <head> that
describes question-and-answer pairs in a machine-readable format. The schema.org spec
defines it as a FAQPage type containing a mainEntity array of
Question objects, each with an acceptedAnswer.
Google deprecated FAQ rich results (the expandable blue-link SERP feature) for most pages in 2023. The citation value did not disappear - it shifted. AI Overviews, which now appear on a significant share of informational queries, parse structured data to source their answers. Perplexity and Bing Copilot do the same. A page with correct FAQPage schema is giving AI systems a pre-formatted, pre-attributed answer block that requires zero inference to cite. That is why it remains the highest-ROI schema investment for content that answers questions.
Audit via MCP - automated schema check in Claude or Cursor
Run audit_schema from @automatelab/ai-seo-mcp
Install the AutomateLab AI SEO MCP server, then call audit_schema with your page URL.
It checks @type correctness, mainEntity structure, Question/Answer nesting,
HTML-mirroring (whether the structured data answers actually appear in rendered page text),
and hidden-content flags. Works inside Claude Desktop, Cursor, and any MCP-compatible client.
Find the MCP server at /products/mcp/ai-seo/. For a quick syntax check without MCP, Google’s Rich Results Test validates the JSON-LD structure but does not catch HTML-mirroring failures - the most common real-world disqualifier.
The 4 patterns that make FAQPage schema valid
Question / Answer pair structure
Every item in mainEntity must be a Question with a
name (the question text) and an acceptedAnswer object
typed as Answer with a text property. No shortcuts -
both types must be present.
@type: "FAQPage" at the root
The outer object must declare "@type": "FAQPage" and
"@context": "https://schema.org". Nesting FAQPage inside another
schema type (e.g., inside an Article) is valid only if the parent type supports
it - most do not, and Google ignores misplaced FAQPage blocks.
mainEntity array
Questions go in mainEntity as a JSON array, not as a single object.
Even a single question must be wrapped in [ ]. The property name is
mainEntity, not mainEntityOfPage or hasPart.
HTML mirroring - visible on the page
Every question and answer in the JSON-LD must appear as visible, rendered text on
the page. Google rejects schema where the structured data does not match the
page body. Use a <details> / <summary>
FAQ accordion - collapsed state is acceptable, hidden via display:none
is not.
Copy-paste FAQPage JSON-LD template
Replace the highlighted placeholders
with your own questions and answers. Add or remove Question objects
inside mainEntity as needed. Make sure every answer also appears as
visible HTML on the page.
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "Your first question here?", "acceptedAnswer": { "@type": "Answer", "text": "Your answer to the first question. Write complete sentences. Do not truncate." } }, { "@type": "Question", "name": "Your second question here?", "acceptedAnswer": { "@type": "Answer", "text": "Your answer to the second question." } }, { "@type": "Question", "name": "Your third question here?", "acceptedAnswer": { "@type": "Answer", "text": "Your answer to the third question." } } ] } </script>
3 common mistakes that silently break eligibility
-
01
Deprecated Question type - missing acceptedAnswer
An older pattern used
@type: "Question"with the answer as a plainsuggestedAnswerstring. The current spec requiresacceptedAnswertyped as"@type": "Answer"with atextproperty. Pages using the old pattern pass a syntax check but fail Google’s structured data processing silently - no warning, no citation eligibility. -
02
JSON-LD content does not match visible HTML
Google cross-references the structured data against the rendered page body. If the answer text in your
<script type="application/ld+json">block differs from what a user sees (different wording, truncated, or entirely absent), the whole FAQPage block is disqualified. This is the most common real-world disqualifier and the one Google’s Rich Results Test does not catch. Useaudit_schemafrom the AI SEO MCP to check this automatically. -
03
Hidden FAQs - display:none or JavaScript-only render
FAQs hidden with
display:none, rendered only after a JavaScript interaction, or blocked by a login wall are treated as inaccessible content. Google’s crawler does not execute click events to reveal them. Use<details>/<summary>for accordions - the content is in the DOM even when collapsed, so it passes. Avoid CSS-only toggles that setdisplay:noneon the answer container.
FAQ
What is FAQPage schema?
FAQPage schema is a JSON-LD block you add to a page’s <head>
that marks up question-and-answer pairs in a format search engines and AI assistants
can read directly. When it’s correct, Google can surface your answers inside
AI Overviews and rich results without the user clicking through to your page.
Why does FAQPage schema help with AI citations?
AI Overviews (Google), Perplexity, and other AI search engines actively parse structured data to source factual answers. FAQPage schema presents your content in a machine-readable question-answer format that maps directly to how these systems store and retrieve knowledge. Pages with correct FAQPage schema are significantly more likely to be cited verbatim in AI-generated answers.
What are the most common FAQPage schema mistakes?
The three most common mistakes are: (1) using a deprecated Question structure without
the required acceptedAnswer nesting; (2) mismatching the JSON-LD content
with the visible HTML on the page - Google rejects schema where the answers do not appear
in the rendered page; (3) marking up hidden or collapsed content that search engines cannot
access - FAQs inside display:none containers or behind JavaScript-only renders
often fail eligibility.
Does FAQPage schema still work in 2025 and 2026?
Yes. Google deprecated FAQ rich results in standard blue-link SERPs for most pages in 2023, but FAQPage schema remains a primary signal for AI Overviews and is actively parsed by Perplexity, Bing Copilot, and other AI search engines. The ROI shifted from visual SERP features to AI citation eligibility - which is now the higher-value outcome.
How do I audit my FAQPage schema?
Use the @automatelab/ai-seo-mcp audit_schema tool inside Claude
or Cursor: pass your page URL and it checks @type correctness,
mainEntity structure, Question/Answer nesting, HTML mirroring, and
hidden-content flags. For a quick spot check, Google’s Rich Results Test validates
the JSON-LD syntax but does not catch HTML-mirroring failures.
More AI visibility tools
All tools
Calculators and reference tools for AI and automation teams.
GPTBot check
Verify that your robots.txt allows AI crawlers - or blocks them intentionally.
llms.txt validator
Check your llms.txt file structure and confirm AI agents can parse your content manifest.
Need schema implemented and audited across your site?
AutomateLab audits and implements structured data as part of AI visibility engagements. FAQPage, HowTo, Article, BreadcrumbList - we verify each type against Google’s current requirements and cross-check HTML mirroring before handing off.
Tell us what you’re working on