To add FAQ schema, put a <script type="application/ld+json"> block on the page containing a schema.org FAQPage, with one Question and its acceptedAnswer for each question shown on the page. Be aware that Google no longer shows FAQ rich results: it stopped on 7 May 2026.
That second sentence changes the advice, so it’s worth being clear about what follows. FAQ schema used to earn expandable questions under your result in Google. In 2023 Google limited that to well-known government and health sites, and in May 2026 it retired the feature completely and removed its documentation. Adding the markup today won’t change how your result looks in Google. This guide shows how to do it properly and when it’s still worth the few minutes.
What FAQ schema is
FAQ schema is structured data: a machine-readable copy of the questions and answers on a page, using the FAQPage type from schema.org, the shared vocabulary search engines use. It doesn’t change what visitors see. It describes, in a fixed format, content that is already on the page.
A page’s FAQ schema has three parts:
FAQPage: the page itself, which holds a list of questions inmainEntity.Question: each question, with its text inname.Answer: the answer, in the question’sacceptedAnswer, with its text intext.
It’s for pages where you, the site owner, wrote both the questions and the answers. A page where one question gets answers from many people, like a forum thread, is a QAPage instead.
Is it still worth adding?
Without a Google rich result, the case is modest. Reasons you might still add it:
- It’s an unambiguous, machine-readable statement of your questions and answers, for any crawler or tool that reads schema.org markup.
- It costs little if your site or CMS can generate it from the FAQ you already show.
- It makes you structure the FAQ well: one clear question, one complete answer.
And reasons not to bother:
- If you were adding it for Google’s FAQ rich result, that result no longer exists.
- Hand-maintained markup drifts from the visible FAQ, and markup that disagrees with the page is worse than none.
The part that matters more for search engines and AI assistants is the FAQ itself: questions phrased the way people ask them, answered directly and correctly in the visible text. Our guide to writing help articles AI can answer from covers that.
A complete example
Two questions, ready to adapt. The answer text can contain simple HTML such as links.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Can I change my plan halfway through the month?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Upgrades apply straight away and you pay only for the days left. Downgrades start at your next renewal."
}
},
{
"@type": "Question",
"name": "Do you offer refunds?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, within 30 days of payment. <a href=\"https://example.com/help/refunds\">See how to ask for one</a>."
}
}
]
}
</script>The visible page should show the same two questions with the same answers, for example as headings with paragraphs, or a list of expandable sections.
How to add it
- 1
Write the FAQ on the page first
The markup describes visible content, so the questions and answers have to be on the page.
- 2
Build the JSON-LD
One
Questionper question, each answer complete. Generate it from the same data that renders the visible FAQ if you can, so the two can’t disagree. - 3
Add it to the page
Put the
<script type="application/ld+json">block in the page’s<head>or<body>. Most CMSs have a field for custom code or structured data. In a framework like Next.js, render the script tag in the page component. - 4
Validate it
Paste the page’s address into the Schema Markup Validator and fix any errors it reports.
- 5
Keep it in step
Whenever the FAQ changes, the markup changes with it. Generated markup does this for free.
Rules to follow
Google’s general structured data policies still apply to any markup:
- Don’t mark up content that isn’t visible to readers of the page. No questions that exist only in the markup.
- The markup must be a true representation of the page: the same questions, with the same answers.
- JSON-LD is the recommended format, ahead of microdata and RDFa.
Two more habits keep it useful:
- Put the full answer in the markup, not a teaser that sends people elsewhere for it.
- If the same question appears on several pages, mark it up on the one that answers it best.
Common mistakes
Marking up content that isn’t an FAQ
Product descriptions or adverts dressed up as questions (“Why is our product the best?”) aren’t an FAQ. Keep to questions people actually ask.
Invalid JSON
A trailing comma or an unescaped quote inside an answer makes the whole block unreadable. Escape double quotes in answer text as \", or generate the JSON with code rather than by hand.
Answers that drift
Someone edits the visible FAQ and forgets the markup, so now they disagree. Generate both from one source.
Expecting a ranking boost
Structured data describes a page. It doesn’t make a page rank higher on its own, and with FAQ rich results gone it won’t change how your Google result looks.