What Is QAPage Schema?#
QAPage schema is a type of structured data — defined in the Schema.org QAPage vocabulary — that marks up pages where a single question is asked and users can submit their own answers. It is specifically designed for platforms like StackOverflow, Quora, Reddit's "Ask Me Anything" threads, and similar community Q&A formats. When correctly implemented, QAPage schema enables Google to display the question and top answer(s) as rich results directly in search.
TL;DR
- QAPage is for user-submitted Q&A only — one question per page, answers submitted by users
- Required:
mainEntity(Question) withname,answerCount, and at least oneacceptedAnswerorsuggestedAnswer(each withtext) - Unlike FAQPage: both
acceptedAnswerandsuggestedAnswerare valid Answer.url(anchor link to the answer) is strongly recommended- Do NOT use QAPage for FAQ pages, blog posts, how-to guides, or editorial content
QAPage vs. FAQPage: Which Should You Use?#
These two schema types are commonly confused. The distinction is critical — using the wrong one will either prevent rich results or result in a guideline violation.
| Feature | QAPage | FAQPage |
|---|---|---|
| Questions per page | One | Multiple |
| Who writes answers | Community users | The site owner/publisher |
| Answer types | acceptedAnswer and/or suggestedAnswer | acceptedAnswer only (not suggestedAnswer) |
| Users can submit answers | Yes — required | No |
| Google rich result status | Active | Deprecated May 2026 |
| Use for blog posts / how-to guides | No | No |
When Not to Use QAPage Schema#
Google's documentation specifies that QAPage is only intended for pages where a single question is asked and the community can submit their own answers. Do not use it for:
- FAQ pages where a publisher provides all answers (use FAQPage schema instead)
- Blog posts or articles written in Q&A format by the author
- How-to guides structured as questions and steps
- Essay or opinion pages written as a single question with an authored answer
- Pages where users cannot submit their own answers
Greadme always issues a content-guideline warning reminding you that QAPage must be used only for genuine user-submitted Q&A formats.
- the site itselfFAQPage (rich result deprecated May 2026)Multiple questions per page; acceptedAnswer only.
- users, one question per pageQAPageacceptedAnswer and/or suggestedAnswer; users must be able to submit answers.
- users, a thread of postsDiscussionForumPostingSeveral questions with user-submitted answers on one page: separate pages per question, or DiscussionForumPosting for the thread as a whole.
- the author, in a blog post, how-to guide or essayNeither QAPage nor FAQPage
Source: this article.
Required Properties#
| Property | Greadme rule |
|---|---|
mainEntity | Error if missing. Must be a Question object |
mainEntity.name | Error if missing. The full text of the question. Greadme warns if under 10 characters or not phrased as a question |
mainEntity.answerCount | Error if missing or not a number. Can be 0 for unanswered questions (not eligible for rich results) |
mainEntity.acceptedAnswer or mainEntity.suggestedAnswer | Error if both are missing. At least one answer required for rich result eligibility |
Answer.text | Error if missing in any Answer object. Must be at least 20 characters |
acceptedAnswer vs. suggestedAnswer#
QAPage supports two answer types — a key difference from FAQPage:
| Type | Meaning | When to use |
|---|---|---|
acceptedAnswer | An answer explicitly marked as correct by the question author or moderator | StackOverflow-style platforms with an accepted answer checkmark |
suggestedAnswer | A community-contributed answer that may be helpful but is not verified | Platforms where any upvoted answer qualifies, or where no accepted answer exists |
You can include both types simultaneously. A page might have one acceptedAnswer and multiple suggestedAnswer objects representing top community responses. Google may display any of them in search results.
Recommended Properties#
| Property | Notes |
|---|---|
mainEntity.text | The long form of the question (full body text, as opposed to the short title in name) |
mainEntity.author | Person or Organization who asked the question. Include name and url (profile page) |
mainEntity.datePublished | ISO 8601 datetime when the question was posted |
mainEntity.upvoteCount | Total vote count (upvotes minus downvotes) as a number |
Answer.url | Strongly recommended. An anchor URL pointing directly to this answer (e.g., https://example.com/q/123#answer-456) |
Answer.author | Person or Organization who wrote the answer, with name and url |
Answer.datePublished | ISO 8601 datetime when the answer was submitted |
Answer.upvoteCount | Total vote count for this answer as a number |
QAPage Schema Code Example#
A complete QAPage with one accepted answer and one suggested answer:
{
"@context": "https://schema.org",
"@type": "QAPage",
"mainEntity": {
"@type": "Question",
"name": "How do I center a div in CSS?",
"text": "I've tried margin: auto but it doesn't always work. What's the modern approach?",
"answerCount": 14,
"upvoteCount": 382,
"datePublished": "2026-03-01T08:00:00+00:00",
"author": {
"@type": "Person",
"name": "css_newbie",
"url": "https://example.com/user/css_newbie"
},
"acceptedAnswer": {
"@type": "Answer",
"text": "Use flexbox: set the parent to display:flex, justify-content:center, align-items:center.",
"url": "https://example.com/q/123#answer-1",
"upvoteCount": 215,
"datePublished": "2026-03-01T09:15:00+00:00",
"author": {
"@type": "Person",
"name": "css_expert",
"url": "https://example.com/user/css_expert"
}
},
"suggestedAnswer": {
"@type": "Answer",
"text": "CSS Grid also works: place-items:center on the parent container.",
"url": "https://example.com/q/123#answer-2",
"upvoteCount": 87,
"datePublished": "2026-03-01T10:00:00+00:00",
"author": {
"@type": "Person",
"name": "grid_fan",
"url": "https://example.com/user/grid_fan"
}
}
}
}Common Mistakes to Avoid#
- Using QAPage for FAQ content: If you wrote the questions and answers yourself, use FAQPage schema (or no schema if Google has deprecated the rich result for your content type). QAPage requires genuine user-submitted answers.
- Missing answerCount: This is a required field. For unanswered questions, set
"answerCount": 0— but be aware that unanswered questions are not eligible for rich results. - Answer.text under 20 characters: Greadme warns on very short answer text. Answers must be complete and useful to be eligible for rich result display.
- Missing Answer.url: Google recommends providing an anchor URL for each answer so users can navigate directly to it. Greadme warns and deducts 8 points per answer when this is missing.
- Non-question format in mainEntity.name: The
nameshould be phrased as a question (starting with how, what, why, when, where, who, or ending with "?"). Greadme warns when the format does not match.
How Greadme Validates QAPage Schema#
Greadme validates QAPage schema with the following key deductions from a starting score of 100:
| Issue | Points lost |
|---|---|
Missing mainEntity | −30 (score goes to 0) |
Missing mainEntity.name | −20 |
Missing mainEntity.answerCount | −15 |
Missing both acceptedAnswer and suggestedAnswer | −25 |
Missing Answer.text | −20 per answer |
Missing Answer.url | −8 per answer |
Missing mainEntity.author | −8 |
Missing mainEntity.text | −5 |
Missing mainEntity.datePublished | −5 |
Run your page through Greadme Schema Validator to see this scoring applied to your own QAPage markup — scan a live URL or paste the JSON-LD directly to verify the Question, acceptedAnswer, and suggestedAnswer structure before you publish. It is free and needs no account.
Frequently Asked Questions#
Can a QAPage have multiple questions?
No. QAPage schema supports exactly one question per page via mainEntity. If your page contains multiple questions with user-submitted answers, either use separate pages for each question or use DiscussionForumPosting schema for the thread as a whole.
Does the question author need to be a registered user?
No. The author can be an anonymous user — just include the name they used when posting. If the platform allows anonymous posting, you can use a generic name like "Anonymous" or omit the author object (Greadme will warn but not error).
How many suggestedAnswer objects can I include?
There is no hard limit. Include all meaningful answers. Google selects which answer(s) to display based on its own relevance signals — marking up more high-quality answers gives Google more options to choose from.
