How to Add FAQ Schema (JSON-LD) to Any Page
Including the part most guides skip: Google narrowed who gets the FAQ rich result in 2023, and this page tells you honestly where that leaves you.
What FAQPage schema is
FAQPage schema marks up a list of questions and answers already visible on your page in a format search engines and AI crawlers can parse directly, rather than having to infer question/answer pairs from surrounding text and formatting.
The part most guides don't tell you:
In August 2023, Google restricted the FAQ rich result (the expandable dropdown in search results) to a small set of well-known, authoritative sites — mostly government and health organizations. If you run a local business, you almost certainly won't get that dropdown treatment in Google search anymore, regardless of how well you implement this.
So why add it at all?
Three reasons it's still worth 10 minutes:
- AI answer engines still use it. ChatGPT, Perplexity, and Google's AI Overviews parse FAQPage schema as a clean, unambiguous signal of what your business gets asked and how it answers — useful when someone asks an assistant a question your page already answers.
- It documents your content's structure for any future rich-result changes. Google's eligibility rules move; the markup being in place costs you nothing and means you're ready if the rules loosen again.
- It forces genuinely useful FAQ content. Writing real questions with real answers (not "Why choose us?") is good for visitors regardless of what any search engine does with it.
A working example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do you offer emergency plumbing service?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, we offer 24/7 emergency service across the greater Springfield area. Call our main line and you'll reach an on-call plumber, not a call center."
}
},
{
"@type": "Question",
"name": "How much does a service call cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Our standard service call is $75, which is credited toward the repair if you go ahead with the work."
}
}
]
}
</script>
Rules Google actually enforces
- The questions and answers in your markup must match what's visibly on the page — this isn't a place to stuff extra keywords that aren't real content.
- Don't mark up user-generated Q&A (like a comments section) as FAQPage — that's a separate
QAPagetype with different rules. - Answers should be text, not just an image or a link with no supporting text.
- One
FAQPageblock per page, containing all the questions on that page.
Skip typing this by hand.
The free Schema Generator has a dedicated FAQ builder — add your questions and answers in a form, copy out valid JSON-LD. The Chrome extension can also detect FAQ-style content already on your page.
Where to put it
Same as any JSON-LD block: inside your page's <head>, on the specific page where those questions and answers actually appear as visible content — not injected sitewide on pages without matching visible text.
Build your FAQ schema in the free generator
Add your questions, get valid JSON-LD back. No install needed.
Open the Free Generator