Skip to content
SEO Madmanby Adam Hafez
Free tool

FAQ schema validator for FAQPage JSON-LD

FAQ schema validator: check FAQPage JSON-LD so every Question has a name and acceptedAnswer text. Notes Google's FAQ rich result removal. Free, in-browser.

Runs entirely in your browser. Nothing you enter is uploaded, logged or stored.

Parsed with the browser's own JSON.parse against Google's documented property tables for FAQPage. Nothing you type is sent anywhere.

Key takeaways

  • FAQPage markup is built from a mainEntity list in which every item is a Question with the question text as its name.
  • Each Question needs an acceptedAnswer whose text property holds the answer, and this checker reports a missing one as a Problem.
  • Google says the FAQ rich result stopped appearing in Google Search starting 7 May 2026.
  • Google removed its FAQ rich result documentation in June 2026 because the feature is no longer shown in Search results.
  • This checker reads only the JSON-LD typed in and cannot judge whether the questions match visible page content.

What it takes

  • A pasted FAQPage JSON-LD object

More tools

All of them free, all of them browser-only.

Browse the tools

How to use it

  1. 1Paste the FAQPage JSON-LDCopy the ld+json script with the FAQPage type, including its whole mainEntity list.
  2. 2Check every Question rowEach mainEntity item should be a Question with a name and an acceptedAnswer with text. Fix any row marked as a problem.
  3. 3Match the visible pageMake sure each question and answer also appears on the page itself, since the markup should describe content people can read.
  4. 4Read the eligibility noteRemember that Google no longer shows the FAQ rich result in Search, whatever the markup says.

What this FAQ schema validator checks

The tool parses the pasted JSON with the browser’s own JSON.parse, finds the first node whose @type is FAQPage, and walks its mainEntity list. It reports:

  • @type is FAQPage. Without that node, nothing else runs and the tool shows a Problem.
  • mainEntity. Missing or empty is a Problem.
  • mainEntity[n] is a Question. One row per item. Any other @type is a Problem.
  • mainEntity[n].name. The full question text. Missing is a Problem.
  • mainEntity[n].acceptedAnswer.text. The answer itself. Missing is a Problem.
  • Eligibility for the rich result. An Info row, always shown.

These rules mirror the structure in Google’s former FAQ documentation: a FAQPage whose mainEntity holds Questions, each with an acceptedAnswer that is an Answer with a text property. Schema.org still defines FAQPage as a web page “presenting one or more Frequently asked questions”.

What changed in 2026

The eligibility row in the tool still reads “Restricted”, echoing Google’s September 2023 rule that the FAQ rich result was only shown for well-known, authoritative government and health sites. That rule has been overtaken. Google’s documentation updates log records two steps. On 8 May 2026 it added a deprecation notice: the feature “will no longer appear in Google Search starting May 7, 2026”. In June 2026 it removed the FAQ documentation, because “The FAQ rich result feature is no longer shown in Google Search results”. The old documentation URL now redirects to that log entry.

So a clean report here means the markup is well formed. It does not mean Google will show anything for it.

How to read the results

Pass means the rule is met. Problem means a required piece is missing. Each Question gets its own three rows, so in a list of eight questions you can see exactly which one lacks an answer. Info marks the eligibility note, which never changes with the input.

Worked example

The tool loads with one Question, name “How do I renew my licence?”, and an acceptedAnswer with the text “Renew online with your reference number.” The report reads:

  • @type is FAQPage: Pass.
  • mainEntity: Pass, “Present”.
  • mainEntity[0] is a Question: Pass, “Yes”.
  • mainEntity[0].name: Pass, “Present”.
  • mainEntity[0].acceptedAnswer.text: Pass, “Present”.
  • Eligibility for the rich result: Info, “Restricted”.

Rename the acceptedAnswer key to “answer” and the text row turns to Problem, “Missing”.

Common mistakes it catches

  • Answers under the wrong key. Only acceptedAnswer.text counts.
  • Items typed as something other than Question, such as a bare Answer or a Thing.
  • Questions with no name, where the text sits in another property.
  • A FAQPage with no mainEntity at all.

It cannot tell whether the answers appear on the page, or whether an answer is really an advert. Those checks need a person reading the page.

Sources

  1. 1.Latest Google Search documentation updates - Google Search CentralPrimary
  2. 2.FAQ (FAQPage, Question, Answer) structured data - Google Search Central
  3. 3.Q&A (QAPage) structured data - Google Search Central
  4. 4.FAQPage - Schema.org

Frequently asked questions

Will FAQPage markup show a rich result in Google?

No. Google's documentation updates say the FAQ rich result would no longer appear in Google Search starting 7 May 2026, and in June 2026 Google removed the documentation because the feature is no longer shown.

Why does the tool still say eligibility is restricted?

That row reflects the earlier rule, under which Google showed the FAQ rich result only for well-known, authoritative government and health websites. Google has since stopped showing it in Search altogether.

Is FAQPage the same as QAPage?

No. Google says QAPage is for a page focused on a single question where users can submit answers, and not for FAQ pages with several questions. This tool does not check QAPage.

Does an empty mainEntity pass?

No. The checker reports a missing or empty mainEntity as a Problem, since the list of Question items is the core of the markup.

Where does the FAQPage node have to be?

The checker finds the first node whose @type is FAQPage in a single object, a top-level array or an @graph list. It does not look inside other nodes.