FAQ Schema (the FAQPage type in Schema.org) is structured markup for pages with questions and answers. It describes a visible FAQ in a machine-readable format. This article covers JSON-LD, implementation, validation, and limitations: Google no longer shows FAQ rich results.
What Is FAQ Schema and Why Use It for SEO
FAQPage is a Schema.org markup type for pages with frequently asked questions. Each markup item describes a question-and-answer pair in a format that search engines can understand.
What FAQ Is Used For
- Answers for visitors — a visible FAQ explains the terms, process, and limitations of a service.
- Structured description — FAQPage connects questions with answers using the Question and Answer types.
- Content maintenance — when the FAQ changes, you can update the corresponding JSON-LD and validate its structure.
FAQPage remains a Schema.org type. Its presence alone does not promise improved rankings, CTR, or mentions in AI answers. The value of a visible FAQ depends on how well it answers people’s questions.
What Changed in Google
FAQ Rich Results Are No Longer Shown
Starting 7 May 2026, Google stopped showing FAQ rich results; on 15 June, it removed the documentation for this format. Therefore, adding FAQPage does not create expandable questions beneath a Google snippet. The changes are recorded in the official Google Search Central log.
FAQ as Page Content
You can still publish useful questions and answers on a page. Give a specific answer, add any necessary explanations, and keep the information up to date. This is content work worth doing regardless of whether FAQPage is present.
Should You Remove Existing Markup?
You can keep valid FAQPage markup if your CMS or other systems that work with Schema.org need it. You should not add it in expectation of an FAQ snippet in Google. Keep the visible FAQ and update the markup along with the answers.
JSON-LD Format for FAQPage
The recommended format is JSON-LD. The markup is placed in a <script type="application/ld+json"> tag in the <head> or <body> of the page. Google explicitly recommends JSON-LD as its preferred format: it does not mix with HTML, is easy to update with JavaScript, and does not duplicate visible content. Alternatives — Microdata and RDFa — require markup directly in HTML elements, which makes maintenance more complicated and increases the risk of errors when the layout changes.
Basic Example
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Как оформить возврат товара?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Возврат возможен в течение 14 дней с момента покупки. Обратитесь в службу поддержки с чеком и заполненным заявлением."
}
},
{
"@type": "Question",
"name": "Какие способы оплаты вы принимаете?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Мы принимаем банковские карты Visa и Mastercard, электронные кошельки и банковский перевод."
}
}
]
}Full Example with Multiple Questions
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Сколько стоит доставка?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Доставка по России бесплатна при заказе от 3000 рублей. Для заказов до 3000 рублей стоимость доставки — 299 рублей."
}
},
{
"@type": "Question",
"name": "Как отследить посылку?",
"acceptedAnswer": {
"@type": "Answer",
"text": "После отправки заказа вы получите трек-номер на email. Введите его на сайте транспортной компании для отслеживания."
}
},
{
"@type": "Question",
"name": "Работаете ли вы в выходные?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Служба поддержки работает с понедельника по пятницу с 9:00 до 18:00 по московскому времени. Заказы принимаются круглосуточно."
}
}
]
}Embedding in HTML
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Вопрос 1?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Ответ на первый вопрос."
}
}
]
}
</script>How to Maintain Valid FAQPage Markup
Match the Visible Content
The text in the markup must match what users see on the page. Do not add questions that exist only in JSON-LD.
Answer Content
Answer the question itself: terms, timelines, cost, or steps. Generic promotional copy that does not answer the question does not help visitors, even if the JSON-LD is syntactically valid.
One FAQPage per Page
For a page’s FAQ, using one FAQPage object is convenient. You can combine several topic sections into an mainEntity array to make the questions and answers easier to maintain.
Content Quality
Questions and answers should be useful and relevant to the page. Do not repeat keywords just for the markup. The answer length depends on the question: sometimes one sentence is enough, while a complex process needs an explanation. There is no universal word-count requirement for FAQPage.
Step-by-Step: Adding FAQ Schema
Step 1: Prepare the Content
Make sure the page has a section with questions and answers. The markup should describe content that already exists.
Step 2: Create the JSON-LD
Create an FAQPage object with an mainEntity array. Each item is a Question object with the fields name (the question) and acceptedAnswer (an Answer object with the field text).
Step 3: Add It to the Page
Add the script to the <head> or before the closing </body>. You can generate the markup dynamically on the server or through a CMS. In WordPress, plugins such as Yoast SEO or Rank Math can automatically create FAQ Schema from Gutenberg blocks. In React and other SPAs, you can add markup using react-helmet or similar libraries. The markup should be available on the page’s initial render — Google recommends server-side rendering for critical SEO content.
Step 4: Validate It
Use the Schema Markup Validator to check the Schema.org vocabulary and a JSON validator to check the syntax. Compare the questions and answers with the page’s visible FAQ.
Step 5: Check the Published Page
Make sure visitors can see the FAQ and that the JSON-LD is present in the HTML. If the page is intended to appear in search, you can check its availability and indexing in Search Console. Adding FAQPage does not guarantee indexing or bring back FAQ rich results.
Validating the Markup
Google Rich Results Test
The Rich Results Test checks rich results supported by Google. FAQPage is no longer among them: the absence of FAQ in this test does not mean there is a Schema.org error. Use the Schema Markup Validator to check FAQPage itself.
Schema Markup Validator
The Schema.org Validator checks whether markup conforms to the Schema.org vocabulary. It is useful for finding typos in types and properties.
Browser Extension
Extensions such as “Structured Data Testing Tool” or built-in developer tools let you quickly check markup on any page. In Chrome DevTools, you can find loaded JSON-LD scripts in the Elements tab by searching for application/ld+json. This helps confirm that the markup is actually loaded and is not blocked by rendering conditions or JavaScript errors.
Common Mistakes
Duplicated Questions
Identical or very similar questions in one FAQPage may be perceived as spam. Keep the wording unique.
Hidden Content
Markup for content that is not on the page violates the rules. The FAQ in JSON-LD must duplicate the visible text.
Too Many Questions
Do not add questions just to increase the count. If the FAQ becomes long, group it by topic or split substantive sections across pages. There is no universal FAQPage requirement for “5–10” or “10–12” questions.
Incorrect Structure
The type must be FAQPage, items in mainEntity must be Question, and answers must be Answer with the field text. Errors in types or fields can cause the markup to be ignored.
HTML in Answers
The text field should contain plain text. HTML tags are not supported in text; if needed, use the text property with cleaned text. If the answer on the page contains lists, bold text, or links, extract the meaning as plain text. For example, instead of <strong>Да</strong>, возврат возможен в течение 14 дней, use “Yes, returns are possible within 14 days.” Links in answers are acceptable if they lead to relevant content on the same site, but not to promotional or affiliate pages.
FAQ Schema and Other Markup Types
FAQPage can be combined with other Schema.org types on the same page. For example, a product page may include Product, BreadcrumbList, and FAQPage markup. Avoid duplicating content across types: if an answer is already in the Product description, do not copy it into the FAQ. Each markup type should add unique information. If you use several JSON-LD scripts, you can combine them in an array inside a single script tag — this makes the markup easier to manage. Example: [{"@context":"https://schema.org","@type":"Organization",...},{"@context":"https://schema.org","@type":"FAQPage",...}]. Search engines process each object in the array independently.
How to Assess the Value of an FAQ
FAQPage does not currently create an FAQ block in Google search results, so it is not possible to promise a CTR increase from this markup. To assess the FAQ itself, consider whether it helps people understand the service, find the terms, and move on to the next action.
If you measure search visits after updating a page, compare similar periods and account for other changes: content, title, rankings, and the composition of search results. Do not attribute every change in clicks to the JSON-LD you added.
Conclusion
FAQ Schema describes questions and answers using FAQPage, Question, and Answer. First, prepare a useful FAQ on the page, then add JSON-LD if needed and check that it matches the content. The type remains in Schema.org, but Google FAQ rich results have been discontinued.
To create the code, use the FAQ Schema generator: enter the questions and answers, copy the JSON-LD, and add it to the page. Before publishing, compare the markup text with the visible FAQ.