What is FAQ schema?
FAQ schema (formally FAQPage structured data) is a type of JSON-LD markup you add to a web page to tell Google that specific content on that page is a list of questions and answers. When Google finds valid FAQPage schema, it can show your questions as expandable rich snippets directly in search results.
A rich result looks like this: your page appears in search, and below the blue link there are 2–3 expandable question rows that users can click to read answers without visiting your site. Studies consistently show this increases click-through rate by 20–30% because your result takes up more space on the page.
FAQ rich results are a quality signal — not a guarantee
Valid FAQ schema makes you eligible for rich results. Google decides whether to show them based on page quality, search query context, and competition. The first step is always getting your schema technically correct — which is what an FAQ schema validator checks.
What does valid FAQ schema look like?
FAQ schema must be placed in a <script type="application/ld+json"> block in your page's HTML. Here is the minimal valid structure:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is FAQ schema?",
"acceptedAnswer": {
"@type": "Answer",
"text": "FAQ schema is JSON-LD structured data that tells
Google which content on a page is a question-and-answer pair."
}
},
{
"@type": "Question",
"name": "How do I add FAQ schema?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Add a <script type='application/ld+json'> block
to your page's <head> or <body> containing the FAQPage JSON-LD."
}
}
]
}Every field in this example is required. Skip any one of them and your schema is invalid — Google will ignore it entirely for rich results.
| Field | Required | What it must contain |
|---|---|---|
| @context | ✅ Yes | "https://schema.org" — exactly this string |
| @type | ✅ Yes | "FAQPage" — exactly this value |
| mainEntity | ✅ Yes | Array of Question objects (at least one) |
| Question @type | ✅ Yes | "Question" — each item in mainEntity |
| Question name | ✅ Yes | The question text as a string |
| acceptedAnswer @type | ✅ Yes | "Answer" |
| acceptedAnswer text | ✅ Yes | The answer text — cannot be empty |
How to validate your FAQ schema
There are three ways to test FAQ schema. Use all three for confidence before expecting rich results.
SEO-Snap FAQ Schema Validator (fastest)
Enter your page URL. SEO-Snap fetches the page, extracts your JSON-LD, and validates all required fields against Google's FAQPage specification. Get specific error messages — not just "invalid schema".
Validate FAQ Schema →Google Rich Results Test (official)
Google's own test at search.google.com/test/rich-results confirms whether Google's crawler can see and parse your schema. Use this for final confirmation after fixing errors found in step 1.
JSON validator (for syntax errors)
If the tools above show a parsing error, paste your JSON-LD into jsonlint.com to find exact syntax errors — missing commas, unclosed brackets, incorrect quote types. Fix syntax first, then revalidate schema structure.
Most common FAQ schema errors (and how to fix them)
Missing acceptedAnswer.text
Very commonThe text property inside acceptedAnswer cannot be empty or absent. Every question must have an answer with actual text content. Even a one-sentence answer is fine — just not an empty string.
// ❌ Bad
{"@type":"Answer"} // missing text property// ✅ Good
{"@type":"Answer","text":"Your answer here."}Incorrect @type casing
CommonSchema.org type names are case-sensitive. "faqpage", "FAQ Page", and "Faqpage" are all wrong. Use exactly "FAQPage", "Question", and "Answer".
// ❌ Bad "@type": "Faqpage" // wrong casing
// ✅ Good "@type": "FAQPage" // correct
JSON syntax error (trailing comma, wrong quotes)
CommonJSON does not allow trailing commas after the last item in an array or object. Use straight double quotes (") not curly/smart quotes ("). Validate with jsonlint.com if the schema validator cannot parse your block.
// ❌ Bad
{"name": "Q?",} // trailing comma// ✅ Good
{"name": "Q?"} // correctFAQ content not visible on page
Less obviousGoogle requires that FAQ schema questions and answers are visible to users on the page — not hidden behind JavaScript that doesn't render server-side, or collapsed by default with no way to expand. The content must be in the HTML that Googlebot fetches.
Using FAQ schema on product/homepage without real FAQ content
Policy violationGoogle's guidelines state FAQ schema should only be used when the page's primary purpose is answering questions. Using it on homepages or product pages as a trick to get more SERP space can lead to manual actions. Only add FAQ schema to pages with genuine FAQ content.
How to add FAQ schema to your page
Add a <script> block anywhere in your page (inside <head> or <body>):
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Your question here?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Your complete answer here."
}
}
]
}
</script>Use a plugin like Rank Math or Yoast SEO — both have built-in FAQ block support. Add FAQ content using the FAQ block in the editor, and the plugin generates valid JSON-LD automatically.
Add a Custom Code component (Embed element) to your page. Paste the JSON-LD script block directly. Webflow does not inject structured data automatically.
Edit your theme's Liquid template. Add the JSON-LD script in the product or page template, using Liquid to dynamically output FAQ questions if they're stored as metafields.
Use dangerouslySetInnerHTML in a <script type="application/ld+json"> tag in your page component or layout. SSR ensures Googlebot sees the structured data on first fetch.
FAQ schema validator vs Google Rich Results Test
Both tools test FAQ schema, but they serve different purposes. Use both for full confidence.
| Capability | SEO-Snap Validator | Google Rich Results Test |
|---|---|---|
| Specific field-level errors | ✅ | ⚠️ Sometimes |
| Confirms Google crawler sees schema | ❌ | ✅ |
| Tests JavaScript-rendered schema | ❌ | ✅ |
| Checks full SEO alongside schema | ✅ | ❌ |
| Instant, no login needed | ✅ | ✅ |
| Explains how to fix errors | ✅ | ❌ |
Frequently asked questions
What is an FAQ schema validator?▼
How many FAQ questions should I include in my schema?▼
Does FAQ schema help with SEO rankings?▼
Can I have multiple FAQPage schema blocks on one page?▼
How long until my FAQ rich results appear after adding schema?▼
Check your FAQ schema now — free
Validate your FAQPage structured data in seconds. Get specific error messages, not just pass/fail. Fix issues and get eligible for Google rich results.
Validate FAQ Schema Free →