What Is QAPage Schema? The Complete Guide (2026)
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.
- 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 (2026) | 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.
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 |
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.
