FAQ Schema Generator
Add your question and answer pairs and get the FAQPage JSON-LD to paste into the page. Quotes, apostrophes and line breaks are escaped properly, and each answer is checked against the rules Google actually enforces.
Questions in this set
Nothing added yet. Fill in a question and an answer above, then press Add question.
Your FAQPage JSON-LD
What this tool does
FAQ schema is a small block of JSON-LD that spells out a page's questions and answers in a
form a machine can read: a FAQPage with a mainEntity list of
Question objects, each carrying a name and an
acceptedAnswer. This tool takes the pairs you add and writes that block,
correctly nested and escaped, ready to paste into the page.
The part worth automating is the escaping. Real answers contain apostrophes, quotation marks, curly punctuation and line breaks, and one unescaped quote makes the whole block invalid JSON. That failure is silent — the page still renders perfectly, and nothing tells you the markup was dropped. The honest caveat is about what the markup is for: since August 2023 Google shows FAQ rich results only for a small set of authoritative government and health sites, so for most sites this is about describing the page accurately to anything that reads structured data, not about winning an expandable result.
How to use it
- Type or paste a question and its answer, then press Add question. Repeat for each pair — the order you add them in is the order they appear in the markup.
- Use the answer exactly as it appears on the page. Shortening it here would make the markup describe something a visitor cannot see, which is the one mistake that turns structured data into a guidelines violation.
- Remove any pair that is not genuinely visible on the page. A question you intend to add later should not be in the markup now.
- Click Copy JSON-LD and paste it inside a
<script type="application/ld+json">tag in the page's<head>or body. Then check it with Google's Rich Results Test.
Common use cases
-
A product page answering the obvious questions
Shipping, returns, sizing, warranty. They are already written at the bottom of the page — the markup just states them in a form a machine can read.
-
A service page handling objections
The four questions that stop people enquiring are worth answering explicitly, and worth marking up so the answers travel with the page.
-
A pricing page
"What is included", "can I cancel", "do you charge per seat" — the questions that otherwise become support email.
-
Adding markup to an FAQ you already wrote
Paste each existing pair in as it stands. No rewriting, so the markup and the visible page stay identical.
-
Replacing a plugin's output
Build the block by hand to see what clean FAQPage markup looks like, then compare it against whatever your theme is generating.
Frequently asked questions
Will FAQ markup make my questions show in Google results?
Usually not, and it is worth knowing why before you spend an afternoon on it. In August 2023 Google limited FAQ rich results to a small set of authoritative government and health sites. For every other site the markup is still valid, still parsed, and still describes the page accurately — it simply no longer produces the expandable list under the result. Add it because it makes the questions and answers explicit to anything that reads structured data, not because you expect the rich result.
Does the answer text have to appear on the page?
Yes. Every question and answer in the markup has to be visible to a visitor reading the page — the same words, not a summary. Hidden text, or answers injected by JavaScript after the page loads, do not count. This is the rule that matters most, because markup describing content a visitor cannot see is treated as spam rather than simply ignored.
Can I mark up an FAQ that sits inside an accordion?
Yes, provided the text is in the HTML. A details and summary
element contains its answer in the DOM whether or not the reader has expanded it, so it is
fine. A JavaScript widget that fetches the answer only when a reader clicks is not, because
a crawler that never clicks sees an empty panel.