Tool

FAQ schema generator: build the FAQPage JSON-LD

Paste your questions and answers the way you already write them: the tool assembles the FAQPage JSON-LD in canonical order, audits the block across 10 items worth 100 points and shows you the queue of what to fix before you paste it on the page. Free, no signup, and nothing leaves your browser.

FAQPage schema generator
Block score-

  • - questions
  • - longest answer
  • - first sentence (avg)
  • - size

Your JSON-LD

What the block gets right (and what is missing)

  • Minimum question coverage-
  • Question written as a question-
  • Answer in the right size-
  • Answer in the first sentence-
  • No repeated question-
  • Only supported HTML in answers-
  • No repeated answer-
  • Page URL declared-
  • Question short enough-
  • Content visible on the page-

Everything runs in your browser: neither the questions nor the block leave this page, and no URL is fetched. The score measures block validity and answer quality, which is what you control. It promises neither a rich result nor an AI citation: the search engine decides that, and the criteria are not public.

This page builds and audits the block for one specific page. If your question is a different one, whether your site as a whole is ready to be cited by AI, the right page is the GEO readiness checker, which runs a 16 item model and treats structured data as a single 6 point item among many. And if what is missing is pointing at the canonical content of the site as a whole, the llms.txt generator handles a different file, at the root of the domain. The three complete each other and do not overlap: the checker tells you what to fix, llms.txt points at the site, this one marks up the page.

First things first: the FAQ rich result is gone for almost everyone

Worth opening with the part most tools leave out. In August 2023 Google restricted the FAQ rich result to well known government and health sites. If you are not one of them, marking a page up with FAQPage will not open that accordion of questions in the search result, and promising otherwise is selling something that does not exist.

That did not zero out the value of the type, it changed the reason to use it. A FAQPage block is still the cheapest way to say, in machine readable form, where each answer begins and ends. Who consumes that today is not only Google: it is the AI systems that need to pull short excerpts, the smaller search engines, the aggregators and, underrated as usual, your own site search. And there is the side effect that pays off most: filling the block forces you to write an answer that resolves the question in the first sentence.

How to use it

  1. Fill in the page URL with the full address, starting at https. It becomes the url and the @id of the block, with a #faq anchor, which is what lets you reference this FAQ specifically when the page carries more than one schema.
  2. Write the pairs in the big box: question on one line, answer on the lines below, blank line between pairs. If your content is already in another shape, the box also understands Q: and A:, the whole pair on a single line split by a vertical bar, and markdown with ### on the question.
  3. Tick the content visible on the page box only if it is true. It carries 6 points because markup describing text that is absent from the page is a guidelines violation, not optimization.
  4. Read the checklist under the block and fix what is red, top to bottom. Each item shows what it is worth and what you earned.
  5. Copy it with the script tag and paste it into the page HTML, in the head or at the end of the body, either works. Before pasting, search the source for application/ld+json: if your CMS already injects a FAQPage, you want to edit that one rather than add a second.

How it works: the structure and the 10 weights

FAQPage is shallow on purpose. A list of questions hanging off a page type, and each question with exactly one accepted answer. There is no author field, no date, no priority: what exists is the text.

FAQPage
├ @id: page url + #faq
├ url, inLanguage
└ mainEntity: [Question]
   ├ name: the question
   └ acceptedAnswer: Answer
      └ text: the answer (limited HTML)

Because the structure is trivial, the difference between a block that works and one that does not lives entirely in the text. So the audit does not measure syntax, which any generator gets right: it measures compliance (is this a real FAQ?) and excerptability (does this answer survive out of context?). The 10 items add up to exactly 100 points.

score = compliance (46) + excerptability (54)
compliance = no repeated question 10 + supported HTML 10 + no repeated answer 8 + URL 8 + visible on page 6 + short question 8
excerptability = answer size 14 + coverage 14 + question mark 12 + answer in first sentence 10
coverage: 14 × clamped(0 to 1 of questions ÷ 4)
answer size: 14 × answers between 50 and 800 characters ÷ total
answer in first sentence: 10 × answers whose first sentence is 25 words or fewer ÷ total

Answer size carries 14 because it is the item that fails most often in practice, at both ends: a ten character answer resolves nothing and a thousand character one stopped being an excerpt and became an article section. Coverage carries another 14 because a FAQPage with one question is a question, not an FAQ. The question mark carries 12 because a Question without a question is the signature of somebody who turned section headings into an FAQ to fill a field. And the first sentence carries 10 because it is literally what a system pulls: if the answer opens with context, the excerpt takes the context instead of the answer.

Worked example (reproduces the default result)

The prefilled values describe a pricing page FAQ with 5 questions, and two flaws planted on purpose so the fix queue does not start empty: the fourth entry was written as a heading (Pricing for large teams, no question mark) and the fifth opens with a 38 word sentence before it gets to the point.

Rewrite the fourth entry as How much does the plan for large teams cost? and the score climbs 2.4 points. Trim the fifth answer so it opens at In data centers in the United States and in Germany, pushing the data residency explanation into the second sentence, and the other 2 come back. Each fix costs a minute, and the price per line rises as the FAQ shrinks, because the proportional items divide by the total number of questions.

How to read it, and where the score misleads

The score measures the block, not the outcome. A FAQPage scoring 100 on a page that AI crawlers cannot read still produces no citation at all, because the problem sat two layers earlier. If your robots.txt blocks AI bots, or the content only appears after JavaScript, fix that first: the GEO readiness checker measures exactly that access layer.

The second trap is believing markup substitutes for writing. Schema describes what exists; it does not improve a weak answer, it only makes it easier to find. If your answers are vague, marking them up accelerates the distribution of vagueness. The right order is to write the answer that resolves the question, confirm it is visible on the page, and only then mark it up.

The third is padding the FAQ to fill the list. There is an obvious temptation to convert every subheading into a question until you hit 20, and the effect is the opposite of the intent: it dilutes the three questions that actually mattered. Coverage saturates at 4 here on purpose, and past 20 a warning shows up.

Finally, an FAQ ages faster than the rest of the page, because it almost always talks about price, delivery time and policy. A block with a stale price is worse than no block: you are handing out the wrong figure in machine readable form, and it will be repeated with confidence. Put the FAQ review on the same cadence as the pricing table review.

From the block to the evidence

Marking up is a bet on how third parties treat your content, and an unmeasured bet turns into team folklore. The honest path is short:

To turn the first item in the queue into a testable hypothesis, use the hypothesis generator. To size the experiment before you turn anything on, the sample size calculator settles it in a minute.

Frequently asked questions

What is FAQPage schema?
It is the schema.org type that declares, in machine readable form, the question and answer pairs that already exist on a page. It creates no content and changes nothing the visitor sees: it is a JSON-LD label, pasted inside a script tag, saying which text is a question and which is the accepted answer. The structure is deliberately shallow: a FAQPage holds a mainEntity list of Question, and each Question carries a name and an acceptedAnswer of type Answer with a text field.
Does FAQ schema still produce a rich result on Google?
For almost everybody, no. In August 2023 Google restricted the FAQ rich result to well known government and health sites, and since then an ordinary site marks the page up and sees nothing different on the SERP. That changed the reason to use the type, not its value: the block is still the cheapest way to hand question and answer pairs to other consumers in machine readable form, which is what matters in AI search. If your goal was visual real estate on Google, adjust the expectation before you mark anything up.
So why keep publishing FAQPage?
Three reasons that do not depend on a rich result. First, AI systems pull short, clearly bounded answers far more easily when someone has already said where the answer starts and ends. Second, other consumers read the same block: smaller search engines, aggregators, assistants and your own site search. Third, editorial discipline: to fill the block you have to write an answer that resolves the question in the first sentence, and that is the change that pays off with or without markup.
Can I mark up questions that are not visible on the page?
No. The structured data guidelines require the marked up content to be visible to the user on the same page, and markup describing absent text is grounds for a manual action. That includes the common case of hiding text inside a collapsed accordion: an accordion is fine, because the text is in the HTML and opens with a click, but text that exists only inside the JSON-LD is not. That is why the confirmation is worth 6 points here and is not decoration.
What HTML is allowed inside the answer?
Only h1 to h6, br, ol, ul, li, a, p, div, b, strong, i and em. Any other tag fails validation, and the one that shows up most is span, inherited from a paste out of a visual editor. Markdown does not work either: the field is HTML, so a link written with brackets and parentheses will render raw inside the answer. The tool flags both, the forbidden tag as lost points and the markdown link as a warning.
How many questions should the block have?
Four to ten on most pages, and no more than 20 in a single block. The lower bound is about usefulness: one question is not an FAQ, and the tool saturates the coverage item at 4. The upper bound is about focus: past 20 the page has become a help center, every answer loses relative weight and keeping it all current turns impossible. If you have 40 questions, the problem is not the schema, it is that there are four pages in there.
Can FAQPage coexist with other schema on the same page?
Yes, and it usually does. A product page normally carries Product plus FAQPage, and an article carries Article plus FAQPage. You can publish the two script blocks separately or merge everything into an @graph. What you cannot do is declare the same FAQPage twice, which happens when the CMS plugin already injects a block and someone pastes another one by hand. Before pasting, search the page source for application/ld+json and see what is already there.
Embed this tool on your site

Paste this code wherever you want the generator to appear. The credit link under the frame helps us and you are free to keep it.

Keep going

With the block published, the next step is the layer it does not solve: crawler access, excerptable text and authorship signals. Read the full method in the generative engine optimization guide, see what changes in conversion work in CRO in the age of AI and the effect of an answer served on screen in zero-click search optimization.

Related tools

See all tools →