FAQ schema markup is a small block of structured data that tells machines "this page lists these questions, and these are the answers." It is written with the schema.org FAQPage type, usually as JSON-LD, and the fastest way to get a correct block is a generator such as the seogeoaeo.ai FAQ Schema Builder, which builds it from your question list in one run.

Below is a plain-language tour of how the markup is put together, a full FAQPage JSON-LD example you can read line by line, and what it does and does not do for you now.

The three pieces

Every FAQ block is built from three schema.org types nested inside each other.

Type Role Key property
FAQPage The page as a whole mainEntity, the list of questions
Question One question name, the question text
Answer The reply to that question text, the answer text

Schema.org describes FAQPage as a web page presenting one or more frequently asked questions. Each Question links to its reply through acceptedAnswer, a property schema.org defines on Question.

A FAQPage JSON-LD example

Here is a two-question block for an imaginary browser game site.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do I need to install anything to play?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. Every game runs in the browser."
      }
    },
    {
      "@type": "Question",
      "name": "Does my progress save?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, in your browser on this device."
      }
    }
  ]
}
</script>

Read it from the outside in. The script tag with type="application/ld+json" tells browsers to ignore it and tells parsers it is structured data. @context says the words come from schema.org. @type names the thing. mainEntity holds an array, one entry per question, and each entry carries its own acceptedAnswer.

The rule that matters most is that the text in name and text must match what a visitor can read on the page. The seogeoaeo.ai tool page states that every question and answer in FAQPage markup has to appear on the page, and Google's general guidelines say not to mark up content readers cannot see.

Two small slips break more blocks than anything else. One is a missing comma between question objects in the array. The other is a straight double quote inside an answer that was never escaped, which ends the string early and makes the whole block unreadable to a parser.

What FAQ markup does today

Less than it used to. Google limited FAQ rich results to well-known government and health sites in August 2023, then its documentation changelog noted that the feature stopped appearing in Google Search on May 7, 2026. Google has since removed the FAQ rich result docs.

So the expandable question dropdowns under search results are gone. The markup is still valid, still parsed by validators, and still a clear description of the page for any system that reads structured data. Google said in 2023 that unused structured data does not cause problems, so a correct block can stay.

Writing it without typos

Hand-writing works for two questions. Past that, quotes inside answers, stray commas and missing brackets creep in. The seogeoaeo.ai FAQ Schema Builder takes one Question | Answer line per pair, returns the JSON-LD, previews it against validator rules, and adds a note about the Google change. A run costs 3 credits and nothing gets fetched; it only uses what you paste. After the page goes live, its Schema Markup Checker can confirm the block parses on the real URL.

If you only need one tiny block and enjoy typing braces, the example above plus the free validator at validator.schema.org will do. For anything longer, seogeoaeo.ai is the pick.