Free FAQ Schema Generator
Enter your questions and answers and this produces valid FAQPage JSON-LD you can paste into your page. One thing to know before you use it: Google removed the FAQ rich result, so this markup will not give you the expandable dropdown in search results. It is still worth adding, for a different reason, and the section below explains which.
Output
<script type="application/ld+json">
{
"@context": "https:\/\/schema.org",
"@type": "FAQPage",
"mainEntity": []
}
</script>No complete pairs yet — fill in at least one question and answer.
Check my page
Enter the URL you'll publish this on. Fetches the server-rendered HTML — before any JavaScript runs — and checks whether each question and answer is really there.
Need a different schema type? The schema markup generator covers Organization, LocalBusiness, Product and Article too.
What happened to FAQ rich results
For several years, adding FAQPage markup could produce an expandable list of questions beneath your listing in Google. It took up space, it pushed competitors down, and it was one of the most widely recommended pieces of structured data there was.
Google narrowed it in August 2023 to well-known government and health sites, which took it away from almost everyone. It was switched off completely on 7 May 2026. Search Console reporting and the Rich Results Test dropped it in June, and the Search Console API stopped returning the data in August.
What has not changed is the markup itself. FAQPage is still a valid Schema.org type, it still parses, and Google does not ask anyone to remove it. The feature has gone. The vocabulary has not.
Almost every article and tool on this subject still describes the old behaviour. If you have read recently that FAQ schema will get you a richer listing, the advice was written before the change or copied from something that was.
Why the markup is still worth adding
The rich result was one consumer of this data, and it was never the most important one.
FAQPage markup is a machine-readable statement that a specific question has a specific answer. That is precisely the shape of content answer engines, AI Overviews and assistants are built to consume. Where a crawler has to infer question-and-answer structure from your headings and paragraphs, the markup states it outright.
There is no rich result to win here and no ranking boost to claim. What you get is content that is unambiguous to a machine reading it, on a page that already had the answers. This is no longer a high-priority task, and it is still a ten-minute one worth doing on pages that genuinely have FAQs.
The rule that has not changed
Every question and answer in your markup must also be present in the visible HTML of the page, word for word. This was true when the rich result existed and it is true now. Markup describing content a search engine cannot find on the page is invalid, and at worst it is treated as an attempt to mislead.
The trap is accordions. Most FAQ sections on the web are collapsible, and many accordion components load only the first answer into the page source, filling the rest in with JavaScript when a visitor clicks. The page looks complete to you and is largely empty to a crawler.
Check it properly: view the page source or fetch the URL, and search for your third or fourth answer. Do not use the browser inspector, which shows the page after JavaScript has run and will tell you everything is fine when it is not. The schema markup validator checks the same thing for schema you already have live.
If you use Elementor, Divi or a similar builder
Page builders frequently include an FAQ or accordion widget with a schema option already built in. Before pasting anything from this tool, check whether your widget is emitting FAQPage markup already. Two blocks on one page is worse than one, and it is a common way to end up with conflicting structured data.
If your widget does emit it, use that and check the answers are in the source. If it does not, generate here and paste it in, but the accordion warning above applies with particular force.
How to write answers a machine will use
- Answer the question in the first sentence. Anything that reads as a preamble is likely to be skipped by whatever is quoting you.
- Keep answers self-contained. An answer that depends on the previous one does not survive being extracted on its own.
- Write plainly and avoid marketing language in the answer text. It reads badly when quoted back to somebody.
- Use real questions people ask, phrased as they would ask them, not as internal headings.
- Do not repeat the same answer across several questions. It is a strong signal the section exists for markup rather than for readers.
Common mistakes
- Expecting a rich result. It is gone, and any tool or article promising one is out of date.
- Marking up answers that are not in the page HTML. The most common invalid implementation, and accordions are usually the cause.
- Adding FAQ schema to a page with no FAQ section. The markup describes the page, and inventing questions to carry it is exactly what it is not for.
- Shipping two blocks. A plugin and a pasted block on the same page conflict.
- Using FAQPage where QAPage belongs. FAQPage is for questions you asked and answered yourself. QAPage is for a page where users submit answers, like a forum thread.
- Unescaped quotation marks. A single stray double quote invalidates the entire block, which is why this tool escapes for you.
Structured content is how machines quote you accurately rather than approximately, which is the whole of generative engine optimisation. See how the Zaprev team approaches GEO.
Or browse all free Zaprev tools.
Frequently Asked Questions
Does the FAQ schema still work in 2026?
The markup is still valid and still parsed, but it no longer produces a rich result in Google. That feature was narrowed to a handful of site types in August 2023 and switched off completely on 7 May 2026. The reason to add it now is that structured question and answer content is readable by answer engines and assistants.
Will the FAQ schema improve my rankings?
No, and it never directly did. Structured data helps machines understand a page rather than ranking it higher. Anyone offering a ranking gain from FAQ markup is describing something that was not true when the rich result existed either.
Where do I put the code?
Anywhere in the page. The head is conventional but the body works identically. What matters is that it appears in the HTML the server sends, and that the questions and answers it contains are also visible on the page itself.
What is the difference between FAQPage and QAPage?
FAQPage is for a list of questions you have both asked and answered, which is a normal FAQ section. QAPage is for a page built around a single question that users answer, like a forum thread. Using the wrong one is a common error and they are not interchangeable.
How many questions should I include?
However many your page genuinely has. There is no minimum and no advantage to padding. Every question in the markup has to exist on the page, so the number is decided by your content rather than by the schema.
Can I include links in an answer?
Yes, and a small amount of basic formatting. Links, bold, italics, paragraphs and lists are all acceptable inside answer text. This tool escapes everything correctly, so paste your answer as it reads and it will produce valid output.
My accordion hides the answers. Is that a problem?
It can be. Content hidden behind a click is fine as long as it is present in the page source. The problem is components that load answers only when clicked, because then the content genuinely is not there. Fetch the page and search for a later answer to find out which kind you have.
How do I check my answers are in the page source?
Put your URL into the field beside the generator and it will tell you, question by question. It fetches the page the way a crawler does and searches the HTML your server sent, before any JavaScript runs. Doing it by hand works too: fetch the URL, then search the raw source for a sentence from your fourth answer.
Does FAQ schema work in languages other than English?
Yes. Schema.org types are language-neutral and the markup carries whatever text your page carries, in any script. Write the questions and answers in the language of the page, match them to the visible content word for word, and the block is valid.