Technical & Structure · 9 min read · July 15, 2026
Implementing FAQ schema: a guide with practical examples
What FAQ schema is and why it pays off
FAQ schema belongs to the family of structured data from schema.org, a shared vocabulary of the major search engines. You use it to describe a question-and-answer block so precisely that a machine understands it without guessing. Instead of seeing only running text, the system recognizes: here is a `Question`, and below it the matching `acceptedAnswer`. The format of choice is JSON-LD, a small block of data in the head or body of your page that stays invisible to visitors and simply mirrors the visible content.
The benefit has shifted. Google used to reward FAQ markup with eye-catching expandable results directly in search. That display was heavily restricted and today appears only rarely, mostly for governmental or medical pages. The markup remains valuable nonetheless: it makes your content unambiguously interpretable for classic crawlers and for AI answer systems that read sources in a structured way. Clarity is the real currency.
A tradesperson, a tax firm and an online shop all share the same basic question: how do I make sure the answers I already have are captured cleanly? This is exactly where the schema comes in. It costs you some one-time effort but changes neither the design nor the load time noticeably, and it creates a reliable data base on which you can build further optimizations later.
When you may use FAQ schema – and when not
The most important rule first: you may only mark up content that is also visible on the page. Hidden markup with questions no visitor ever gets to see violates the guidelines and can lead to a manual penalty. The schema is a mirror of the visible content, not a second page in the underground. If you mark up an FAQ section, the user must be able to read the same questions and answers in the browser.
FAQ schema is equally unsuited for advertising, product promotion in the answer text, or for user questions from a forum where several answers compete. For questions answered by the audience there is a dedicated type, `QAPage`. Confusing the two makes the markup wrong. FAQ schema explicitly means questions that the site operator poses and answers themselves, for example in a help section or on a product detail page.
Well-suited are pages with real, recurring customer questions: shipping and return conditions in a shop, the scope of a firm's services, the process of a medical treatment, the requirements for a loan. If you answer such questions on the page anyway, the markup is a logical next step and not an artificial add-on.
The structure in detail: understanding JSON-LD
JSON-LD stands for JavaScript Object Notation for Linked Data. It is a separate block of data that you place inside a `<script type="application/ld+json">` element. The big advantage over older methods such as microdata: you don't have to touch your existing HTML. The block sits apart from the visible code, is easy to maintain and can be output centrally through a content management system or a plugin without anyone having to fiddle with the layout.
The basic structure is manageable. You declare a context, the type `FAQPage`, and within it a list called `mainEntity`. Each entry in the list is a `Question` with a name field for the question text and an `acceptedAnswer` of type `Answer` whose `text` field contains the answer. The basic variant needs no more than that. The answer text may contain simple HTML such as links or lists, as long as it is properly encoded.
What matters is exact correspondence: the text in the markup should match the visible text in substance. Small formatting differences are uncritical, but you should avoid differences in content. Anyone who stores a different answer in the markup than on the page risks having the markup judged as misleading.
Practical example: a complete block of code
This is what a ready-to-use example for an online shop looks like. You can take it as a template and replace both the questions and the answers. The block belongs in the source code of exactly the page on which the FAQ is also visible.
Note three details in the example. First, quotation marks inside the texts must be escaped correctly, otherwise the JSON breaks. Second, you separate multiple questions with a comma, with none after the last entry. Third, you only need one `FAQPage` block per page, even if it contains ten questions. Multiple competing blocks on the same page only cause confusion for the crawlers.
For other industries you change only the content. A physiotherapy practice asks about appointment booking and cost coverage, a software company about contract term and data storage location, a travel provider about cancellation deadlines. The technical shell stays identical in every case, which is what makes the schema so reusable.
- "@context": "https://schema.org" – points to the vocabulary
- "@type": "FAQPage" – declares the page as an FAQ
- "mainEntity": [...] – the list of all questions
- "@type": "Question" with "name" – a single question
- "acceptedAnswer" with "@type": "Answer" and "text" – the answer to it
Building it in and testing it step by step
The process is always the same regardless of your technology. First you gather real questions, ideally from the support inbox or from sales conversations, so that you don't mark up invented questions. Then you write clear, self-contained answers that are understandable even without context. Only after that does the JSON-LD come into being. This order prevents you from building markup for which there is no visible content at all.
For implementation you have two paths. In a CMS like WordPress, TYPO3 or Shopify, an SEO plugin often handles the output automatically and you only fill in form fields. On a self-built page you insert the script block directly into the template that renders the FAQ section. In both cases the markup should be delivered server-side so that crawlers find it reliably without executing JavaScript.
Finally, you test. The Rich Results Test and the Schema Markup Validator check your code for syntax errors and report missing required fields. In addition, the Search Console shows you over weeks whether search engines recognize the markup permanently. A one-time green test is not enough; keep watching the page after it goes live too.
Common mistakes and how to avoid them
The classic mistake is invalid JSON. A forgotten comma, an unescaped quotation mark or a wrong bracket is enough, and the entire block is ignored. That is why every block belongs through a validator before going live. Never copy it blindly from a word processor that automatically converts typographic quotation marks, because these are invalid in code and one of the most common sources of error of all.
The second big mistake is the discrepancy between markup and page. Anyone who marks up questions that don't appear on the page at all, or shortens and prettifies answers, acts against the guidelines. Equally problematic: building the same FAQ identically into ten subpages just to have markup everywhere. Mark up FAQs where they thematically belong, not blanket-style as a standard building block.
A third, underestimated mistake is marking up thin or promotional answers. Sentences like "Call us, we're happy to advise you" are not real answers and bring nothing to either users or machines. Phrase every answer so that it actually answers the question, with concrete deadlines, numbers or conditions.
What FAQ schema really delivers today
Be honest with yourself about expectations. The eye-catching expandable FAQ results in Google search are history for most websites. Anyone who builds in FAQ schema only for that look will be disappointed. The real value lies deeper: you deliver structured, unambiguously assigned content that search engines, voice assistants and AI answer systems can process correctly more easily. That is no ranking turbo, but a solid foundation.
Precisely for generative answer systems that combine sources into a single answer, clean structure is an advantage. A system that answers a question about cancellation deadlines finds the matching passage faster in clearly marked-up question-and-answer markup than in a long block of running text. Whether and how strongly individual systems weight this is not publicly documented, but clarity never hurts and costs you little.
So treat FAQ schema as a hygiene measure, not as a growth lever. It belongs to a well-maintained technical base like correct headings and clean internal links. Build it in where real questions are answered, keep it current, and measure the effect soberly through your actual metrics rather than through promises.
How to measure whether your FAQ schema really works
Building in FAQ schema is one thing. Knowing whether it delivers is another. The most honest place for that is Google Search Console. Under the Enhancements section you'll find a dedicated report for FAQ rich results. There you see how many of your pages are validly marked up, where warnings appear, and from when Google actually recognized the data. Check this report after every larger rollout, because markup that works in the test can still fail live due to a cache or a faulty delivery.
For the real effect you count two things separately. First, the impressions and click-through rate of the affected pages in the performance report, filtered to the respective URLs. If the click-through rate rises noticeably after implementation, you earn more attention in the results. Second, the share of search queries in which your answers appear directly. Set a fixed cut-off date before implementation and compare four to six weeks later. Without this before-and-after comparison you're only guessing instead of knowing.
Industry differences: where FAQ schema is strong and where barely
Not every industry draws the same benefit from FAQ markup. In the local services sector, for example trades, practices or gastronomy, you often answer the same questions about opening hours, directions, prices or cancellation conditions. Precisely such short, clearly delimited answers fit ideally into the schema and serve real user questions. Even in the B2B environment with products that need explanation it helps to structure typical objections and technical details cleanly.
In e-commerce, by contrast, caution is advised. Product pages are the wrong place for generic FAQs, because Google here expects product and review markup instead. Anyone who disguises marketing questions as FAQs risks a manual penalty. In the YMYL area too, meaning finance, health or law, Google checks answers more strictly. Only use the schema there if your answers are professionally sound and backed by an identifiable source. The rule of thumb stays simple: real question, real answer, real added value.
Maintenance: FAQ schema is not a one-time project
The most common mistake after implementation is never touching the schema again. But your answers age. Prices change, processes get adjusted, conditions fall away. If the visible text already shows the new answer but the markup still carries the old one, you have a discrepancy that Google can rate as a violation. So set yourself a fixed rhythm, for example every quarter, and align markup and page content point by point.
In practice a small roadmap helps. Keep a list of all pages with FAQ schema, including the last check date. Use the Rich Results Test with every update to catch syntax errors early. Make sure that questions and answers in the markup are word-for-word what visitors actually see. And consistently delete entries as soon as a question is no longer relevant, instead of merely hiding them. That way your schema stays clean, credible and permanently effective.
Common questions
Does FAQ schema still bring rich results in Google search?
Only rarely now. Since a restriction, Google shows expandable FAQ results predominantly for governmental and medical pages. The main benefit today lies in the clear, machine-readable structure of your content, no longer in the eye-catching display.
Does the FAQ content also have to be visible on the page?
Yes, that is mandatory. You may only mark up questions and answers that visitors can read in the browser. Hidden markup violates the guidelines and can lead to a manual penalty. The schema mirrors visible content, it does not replace it.
Which format should I use, JSON-LD or microdata?
JSON-LD is the recommended choice. It sits as a separate script block apart from the HTML, is easy to maintain and can be output centrally through a CMS or plugin. Microdata works too, but nests the markup confusingly inside the visible code.
Read on