Schema Forge

Schema guide

FAQ schema markup (FAQPage JSON-LD)

How to write FAQPage JSON-LD: required properties, a working example, the rules Google applies, and what changed for FAQ rich results.

Overview

Short answer

FAQPage markup labels question-and-answer pairs on a page so machines can read them. Add one Question per visible question, with the full visible answer as acceptedAnswer.text. Google now shows FAQ rich results only for well-known government and health sites, but the markup stays valid and gives other search and AI systems a clean structure.

What it can do for you

Google Rich results: limited
Limited. Since 2023 Google shows FAQ rich results only for well-known government and health sites.
AI and answer engines
Gives search and AI systems a clean copy of each question and its answer, so they do not have to guess where one ends.

Use it when

  • The site owner wrote several questions with one answer each
  • A help page, product FAQ or service page with a questions section

Skip it when

  • Visitors post their own answers (use QAPage)
  • The questions or answers are not visible on the page
  • The content is mainly advertising

Properties

PropertyStatusNotes
@type: FAQPageTop levelOne FAQPage per page.
mainEntityFAQPageAn array with one Question for each question on the page.
nameQuestionThe question text exactly as visitors read it.
acceptedAnswerQuestionAn Answer whose text is the full answer. Simple HTML such as links and lists is allowed.

Example

faq.jsonld (example)
<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": "Open the sign-in page, choose Forgot password, and enter the email on your account. We send a reset link that stays valid for 30 minutes."
      }
    },
    {
      "@type": "Question",
      "name": "Why has my reset email not arrived?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Check your spam folder first. If it is not there after ten minutes, request a new link. Only the most recent link works."
      }
    }
  ]
}
</script>

A minimal, valid block for a page with two questions. Place it in the head or at the end of the body.

Schema Forge looks for three patterns: details and summary pairs, dt and dd pairs, and headings that end in a question mark followed by paragraphs or a list. It needs at least two pairs.

Custom accordions built from generic div elements are not detected, so add the pairs by hand in that case. Every answer is flagged for you to check against the visible text.

Common mistakes

  • Marking up questions or answers that are not on the page.
  • Using FAQPage for advertising or promotional content.
  • Repeating the same question twice on one page.
  • Giving a teaser that links elsewhere instead of the full answer.

Questions

Does FAQ schema still give rich results in Google?

Rarely. Since 2023 Google shows FAQ rich results only for well-known government and health websites. For other sites the markup is still valid and gives search engines and AI assistants a clean question-and-answer structure, but it should not be expected to change how your listing looks.

Can I mark up questions that visitors submit?

No. FAQPage is for questions and answers written by the site owner. If visitors can submit answers, use QAPage instead.

Do the answers in the markup have to match the page?

Yes. Every question and answer in the JSON-LD must be visible on the same page, with the same meaning. Markup for content that visitors cannot see goes against Google's guidelines.

How many questions should I include?

Include every question that is actually on the page. There is no minimum in the specification, but a single question is usually a sign the page is not an FAQ.

Generate this markup for your page

Paste the address of a public page and get a ready-to-paste block, with every gap listed.

Open the generator

Keep going