
Element Code: RI-010
What FAQPage schema actually is
FAQPage is a schema.org type for a page that contains a list of questions, each with a single answer written by the site itself. Technically it is a FAQPage item with a mainEntity array of Question objects, and each Question carries a name (the question text) and an acceptedAnswer holding an Answer object with the answer text. That is the whole model. It is deliberately simple, which is why it became the most abused schema type on the web for a few years.
The important boundary: FAQPage is for questions the site answers itself, one authoritative answer per question. If your page lets users submit their own answers, that is a forum pattern and the correct type is QAPage, not FAQPage. Mixing these up is one of the most common validation problems I see in audits.
The uncomfortable part: Google mostly stopped showing it
Here is the context any honest guide has to lead with. In August 2023, Google announced on the Search Central blog that FAQ rich results would only be shown for "well-known, authoritative government and health websites." For everyone else, the expandable Q&A dropdowns under search listings disappeared, and the FAQ enhancement report in Search Console was retired shortly after.
Why did that happen? The feature got hammered. Every SEO plugin made FAQ markup a one-click add, sites bolted fake question blocks onto commercial pages purely to grab extra SERP pixels, and the results got worse for users. Google reacted the way it usually does when a rich result gets gamed to death: it pulled the feature rather than policing it.
So why is this still a check worth running? Three reasons that hold up in 2026:
- Bing still supports FAQ rich results, and Bing traffic is not nothing, especially for B2B audiences living in Edge and for anything surfacing through Copilot.
- Machine readability. Cleanly structured question and answer pairs are trivially easy for parsers and answer engines to lift accurately. You cannot guarantee any AI system uses your markup, but you can guarantee that ambiguous, unstructured content is harder to extract correctly.
- It costs almost nothing. If a page genuinely is an FAQ, the markup is a templated five minute job. Low cost, some upside, no downside when done honestly.
My in-the-trenches position: mark up real FAQ pages and real FAQ sections. Do not bolt FAQ blocks onto every page in the template chasing a Google feature that no longer exists for you. I still find sites doing that in 2026 and it is pure cargo cult.
When FAQPage applies, and when it does not
FAQPage vs QAPage vs plain content
| Scenario | Correct markup | Why |
|---|---|---|
| Support page with questions your team wrote and answered | FAQPage | One authoritative answer per question, authored by the site |
| Forum or community thread with multiple user answers | QAPage | Built for user-generated answers with voting and accepted answers |
| Product page with two token questions stuffed in the footer | No FAQ markup | Not genuine FAQ content; this is the pattern that got the feature killed |
| Single question answered in depth as a full article | Article, not FAQPage | FAQPage expects a list of questions, not one long editorial answer |
| Same FAQ block repeated sitewide in the template | Markup on one canonical FAQ page only | Duplicated markup adds noise and zero value |
How to implement it
Use JSON-LD in the head or body. Here is the minimal valid shape:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How long does an SEO audit take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A focused technical audit typically takes one to two weeks depending on site size."
}
},{
"@type": "Question",
"name": "Do you audit JavaScript rendering?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, rendered and raw HTML are compared on every template."
}
}]
}Implementation notes that save you validation headaches:
- The full question and the full answer must be visible on the page. Markup that does not match visible content is a structured data guidelines violation.
- Answer text may contain a limited set of HTML tags per Google's documentation: headings,
br, lists, links, paragraphs, divs, and bold or italic tags. Everything else gets stripped or flagged. - One FAQPage per page. Put all Question objects in a single
mainEntityarray rather than emitting multiple FAQPage blocks. - If your CMS uses an SEO plugin, check what it emits before adding your own block, or you will ship duplicate conflicting FAQPage items. Yoast and Rank Math both have FAQ blocks that output this markup.
How to detect missing or broken FAQPage markup
- Rich Results Test (search.google.com/test/rich-results): paste the URL, confirm the FAQ items parse and check for warnings. This validates Google's parsing even though the visual rich result is restricted.
- Schema Markup Validator (validator.schema.org): stricter, vendor-neutral validation of the raw structure.
- Screaming Frog: enable Configuration, then Spider, then Extraction, tick JSON-LD and structured data validation, crawl, and filter the Structured Data tab for FAQPage errors sitewide. This is the only sane way to audit markup across thousands of pages.
- Manual spot check: view source, find the JSON-LD block, and read it against the visible page. Automated validators pass markup that lies about what is on the page; humans catch it.
DO and DON'T
- Mark up genuine FAQ pages where users actually ask these questions
- Keep the markup a mirror of the visible Q&A text
- Use one FAQPage block with all questions in a single mainEntity array
- Validate with the Rich Results Test and a full Screaming Frog crawl
- Check what your SEO plugin already outputs before adding more
- Bolt FAQ blocks onto every page template chasing rich results Google no longer shows you
- Use FAQPage for forum threads or user-generated answers; that is QAPage
- Stuff promotional copy or links into answers as fake questions
- Mark up questions whose answers are hidden or absent from the page
- Emit multiple conflicting FAQPage blocks from plugin plus theme plus hand-coded JSON-LD
What good looks like
A page that passes this check cleanly has one JSON-LD FAQPage block, every question and answer visible on the page word for word, no validation errors in the Rich Results Test, and no duplicate blocks fighting each other. Sitewide, FAQ markup appears only on pages that are actually FAQ content. And the team's expectations are calibrated: this markup is cheap semantic hygiene with Bing and answer-engine upside, not a Google SERP feature play. If someone is selling you FAQ schema as a rankings lever in 2026, walk away.
FAQ
Did Google remove FAQ rich results completely?
Does FAQPage schema help rankings?
Should I remove existing FAQPage markup?
FAQPage or QAPage for my page?
Can I put HTML in the answer text?
Structured data is one of forty things that can quietly go sideways on a site.
If you want every schema block, template, and crawl path checked by a human who has done this for twenty years, that is exactly what the advanced audit is.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







