FAQ schema markup generator
FAQPage markup is still valid schema.org, and it no longer produces an FAQ rich result in Google Search. Both things are true, and most pages ranking for this topic tell you only the first.
Google Search features this type can produce
From the registry| Feature | Status | Surface | Last verified |
|---|---|---|---|
| FAQ (opens in a new tab) Valid schema.org. No longer produces a Google FAQ rich result as of 7 May 2026. Still parsed by other search engines and by AI crawlers. Keeping the markup is harmless; expecting a Google feature from it is not supported. | REMOVED | search | 2026-08-29 |
Meeting a feature’s documented requirements does not guarantee that the feature appears. No tool can promise that, and any that does is describing something it cannot know.
Generate the markup
Runs in your browser<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do you ship internationally?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We ship to the UK, the EU and the United States. Delivery outside those regions is arranged case by case — email us before ordering."
}
},
{
"@type": "Question",
"name": "How long does delivery take?",
"acceptedAnswer": {
"@type": "Answer",
"text": "UK orders arrive in two to three working days. EU and US orders take seven to ten working days once they clear customs."
}
},
{
"@type": "Question",
"name": "Can I return an item?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, within 30 days of delivery, provided the item is unused and in its original packaging. Return postage is paid by the customer unless the item arrived damaged."
}
}
]
}
</script>Paste this into the <head> of the page it describes. Markup that describes a page must live on that page.
What actually changed
Google stopped showing the FAQ rich result. In our registry that change is recorded with an effective date of 7 May 2026, and the entry is kept rather than deleted, because a page that still carries FAQPage markup deserves to be told what that markup now does rather than to have the check quietly disappear.
The distinction that matters is between three separate things people run together. FAQPage is a valid schema.org type: it was valid before, it is valid now, and a schema.org validator will continue to accept it. The Google FAQ rich result — the expandable questions that used to appear under a listing — is a Google Search feature, and that feature is gone. And whether other consumers read FAQPage markup is a third question entirely, with a different answer again.
So: keeping the markup costs you nothing and breaks nothing. Adding it to a new page in the expectation of a Google feature is building on something that is not there. Removing it from an existing page is optional work, and if the markup is generated by your CMS, leaving it alone is a perfectly reasonable decision.
Why this page exists in the form it does
Most pages that rank for FAQ schema markup were written while the rich result still existed and have not been revisited. They will tell you to add FAQPage markup to win extra space in the results. That advice was correct once. It is not correct now, and following it produces a slightly bloated page and no feature.
We would rather be the accurate page than the optimistic one. The generator below works, produces valid FAQPage JSON-LD, and is genuinely useful if you want the markup for reasons other than a Google rich result. The status panel next to the output says what the markup does and does not do, and it says the same thing on the audit report when we find FAQPage markup on a page we check.
Reasons to still use it
Other search engines and answer engines parse schema.org markup independently of Google, and FAQPage remains a clear, machine-readable statement that a block of content is a question with an answer. Crawlers that assemble training or retrieval corpora also read it. None of this is a promise of anything — it is simply that the markup carries meaning to consumers other than one search engine.
There is also a documentation benefit that has nothing to do with any crawler. Structuring your FAQ content as explicit question and answer pairs tends to improve the content itself, because it forces each answer to stand on its own rather than trailing off into the next paragraph.
What has not changed at all is the content requirement. Question and answer text in the markup must appear in the visible page content. If your FAQ lives in a collapsed accordion, that is fine — content a visitor can reveal by clicking is acceptable, and our visibility engine treats a closed accordion as visible rather than hidden. Content that exists only inside the JSON-LD is a different matter, and always has been.
How to structure the markup
An FAQPage carries a mainEntity array of Question nodes. Each Question has a name, which is the question text, and an acceptedAnswer, which is an Answer node with a text property. The answer text may contain limited HTML for links and lists, but it should be the same answer the visitor reads, not a shortened or a keyword-loaded variant of it.
One FAQPage per page. If you have questions scattered across several sections, they still belong to one FAQPage entity rather than to several. And FAQPage describes a page whose purpose is answering questions — a product page with a short FAQ block at the bottom is a Product page that happens to contain questions, and marking the whole thing as an FAQPage misdescribes it.
Do not use FAQPage for a search results page, a forum thread where users answer each other, or a single question that the page then answers at length. QAPage covers the user-generated case and is a separate type with separate treatment.
Mistakes worth avoiding
Answers in the markup that are not on the page
Writing a longer, more complete answer into the JSON-LD than the one visitors see fails the visible-content requirement. It is also self-defeating: the version nobody reads is the one you spent effort on.
Marking up a whole site’s FAQ on every page
Injecting the same FAQPage block site-wide via a tag manager means every page claims to be an FAQ page. Scope it to the page the questions actually belong to.
Treating the accordion as the problem
Collapsed accordions are fine. Content a visitor can expand counts as visible. If a tool flags your closed FAQ accordion as hidden content, the tool is wrong, and that specific false positive is the reason our visibility model has a separate state for it.
Expecting the rich result back
Features have been removed and not restored before. Build on what is documented now, and treat any return as a bonus rather than a plan.
Check what you already have
If the page you are marking up already carries structured data, audit it before adding more. Duplicate entities from a theme and a plugin are the most common finding on established sites, and adding a third block makes it worse rather than better.