// FREE TOOL · FAQ SCHEMA GENERATOR

FAQ schema generator

Type your questions and answers once; get the FAQPage JSON-LD and the visible HTML block that matches it word for word — free, in your browser, ready to paste.

FreeInstantNo signupRuns in your browser

Also inEnglishDeutsch

FAQPage · generator
Questions and answers

Plain text only. Line breaks inside an answer are kept. Nothing is sent anywhere — the generator is a small script on this page.

Errors and warnings
    JSON-LD — paste into the page
    
                
    Visible HTML — paste where the FAQ shows
    
              

    How to generate FAQ schema

    Write each pair once; the generator renders both outputs from the same list, so the markup and the visible FAQ cannot say different things.

    1. Add your questions and answers. One row per pair. Phrase the question the way people type it into a search box, and make the first sentence of the answer a complete answer on its own.
    2. Read the warnings. Empty rows are skipped, a row with only a question or only an answer is an error, duplicate questions and very long answers are flagged.
    3. Paste the JSON-LD. Copy the script block into the page — head or body, either works — one FAQPage per page.
    4. Paste the visible HTML. Copy the details/summary block into the page where readers will see the FAQ. It carries exactly the text the JSON-LD declares. If you later edit one, regenerate both.

    Why the markup must match the visible text word for word

    FAQ schema is FAQPage structured data — a JSON-LD block listing the questions and answers that appear on a page — so search engines and AI answer engines can read them as data instead of guessing from the layout. The key word is appear. Google's structured data guidelines require that marked-up content is visible to the reader and matches what the markup says; a page whose JSON-LD lists questions the visitor cannot see, or answers that differ from the visible ones, violates those guidelines and can lose its structured data eligibility through a manual action.

    Most generators stop at the JSON-LD and leave the visible half to you. That is where drift starts: the copy gets edited in the CMS, the script block does not, and six months later the markup describes a page that no longer exists. This generator writes the visible HTML and the JSON-LD from the same list in the same pass — the <summary> text is the name, the <p> text is the acceptedAnswer.text, character for character. Regenerate both whenever you change either, and the two cannot disagree.

    The rule is not only about compliance. AI answer engines lift the visible sentence, and a reader who lands on the page from that quote expects to find it. One source for both surfaces is how you make sure they do.

    What FAQ schema does today, honestly

    In August 2023 Google limited FAQ rich results in Search to well-known, authoritative government and health websites. For everyone else the expandable Q&A snippet under a listing is gone, and any tool that still promises it is describing 2022. So why mark up an FAQ at all?

    • The visible FAQ ranks. A question phrased the way people search it, answered in one clean sentence, is a page section that can rank on its own and be quoted by an AI engine. The markup is the machine-readable copy of that section, not the reason it ranks.
    • Structured data is still parsed. Google reads FAQPage markup even where it shows no rich result, and other consumers — Bing, answer engines, your own agents — use it as a clean extraction path.
    • The discipline pays off elsewhere. Writing a question as a query and an answer as a standalone sentence is exactly what gets a page cited in AI answers, with or without JSON-LD.

    What not to expect: a ranking boost from the markup itself, or a rich result on a commercial site. Use it because the page has a real FAQ and you want its two surfaces to agree.

    Writing questions and answers that get quoted

    • Phrase the question as a real query. How do I…, Can an agent…, Is X required… — the way it is typed into a search box, not a heading-style label.
    • Answer completely in the first sentence. Extractors take the opening sentence; the rest is supporting detail.
    • Make every sentence stand alone. No it, this or as mentioned above that only makes sense in context — a quoted sentence loses its neighbours.
    • One idea per pair. A question that needs three answers is three questions.
    • Facts over adjectives. Numbers with named sources get quoted; superlatives do not.
    • Only questions people actually ask. An FAQ is not a place to hide marketing claims behind a question mark.

    Where to put the code

    The JSON-LD goes anywhere in the page inside <script type="application/ld+json"> — head or body, Google reads both. Use one FAQPage block per page, and do not repeat the same question across several pages; the markup describes the page it sits on. The visible block goes wherever the FAQ is meant to be read; <details>/<summary> is collapsible without any JavaScript and stays in the HTML for crawlers.

    FAQPage is for questions the site itself asks and answers. A page where visitors post questions and others answer — a forum thread, a support community — is a QAPage, a different type. And the JSON-LD only describes what is on the page: hreflang for your language versions and an llms.txt for agents are separate surfaces, covered by the hreflang tag generator and the llms.txt validator — both built on the same rule as this page: one source, two outputs, no drift.

    // FAQ

    What is FAQ schema?

    FAQ schema is FAQPage structured data — a JSON-LD block listing the questions and answers that appear on a page — so search engines and AI answer engines can read them as data instead of guessing from the layout. Each entry is a Question with an acceptedAnswer whose text matches the answer shown on the page.

    Does FAQ schema still show rich results in Google?

    Only on well-known, authoritative government and health websites. Google made that change in August 2023, so on most sites the expandable FAQ snippet no longer appears. The markup is still parsed and still useful for answer engines, but it is not a ranking factor and it will not add a rich result to a commercial page.

    Does the FAQ markup have to match the visible text?

    Yes. Google's structured data guidelines require marked-up content to be visible on the page and to match it. Markup that lists questions or answers the reader cannot see violates those guidelines and can cost the page its structured data eligibility. This generator writes the HTML and the JSON-LD from the same list so they match word for word.

    Where do I put FAQPage JSON-LD?

    Anywhere in the page inside a script tag with type application/ld+json — head or body, either works. Use one FAQPage block per page. Put the visible details/summary block where readers will see the FAQ.

    Can I use HTML inside FAQ schema answers?

    Google allows a limited set of HTML tags in an Answer text, such as paragraphs, line breaks, lists and links. This generator keeps answers as plain text so the visible copy stays identical to the markup; line breaks inside an answer are preserved as newlines in the JSON-LD and as br tags in the HTML.

    How many questions should an FAQ page have?

    There is no required number. Three to eight is typical: enough to cover the questions people really ask, few enough that each answer is worth reading. One FAQPage block per page, and each question once.

    Is FAQPage the right type for user-submitted questions?

    No. FAQPage is for questions the site itself asks and answers. A page where visitors post questions and others reply — a forum thread or a support community — should use the QAPage type instead.

    clize seo check — free for your own domain

    Markup in place? Measure the page, not the promise.

    Checking your own site is free: Search Console positions and impressions against the last window, your pages with their live HTTP and index status, and traffic by source with AI engines listed separately. One command from inside your agent.

    $ npm i -g @clize/clize && clize install
    $ clize seo check --domain yourdomain.com
    [ Agent SEO by Clize → ]