❓ FAQ Schema Generator

Last updated: April 15, 2026

FAQ Schema Generator

Create Google FAQPage JSON-LD from your Q&A pairs. Paste plain text or simple HTML in answers.

Policy Warnings — These may disqualify your FAQ rich results:


    Generated JSON-LD — paste this into your page <head> or before </body>
    
      

    FAQ Schema: What It Actually Does and How to Stop Wasting It

    If you have ever seen those expandable question-and-answer dropdowns directly in Google search results — the ones that sit right below a blue link and let users expand answers without clicking — that is FAQ rich results in action. The mechanism behind them is a small block of JSON-LD code called FAQPage schema markup, and it costs you nothing but five minutes of effort.

    What most people get wrong is assuming it is a set-and-forget trick. It is not. Google has quietly tightened its policies, and sites that once enjoyed FAQ rich results have had them silently stripped away because of markup issues, policy violations, or content that technically validates but fails Google's quality signals. This guide cuts through the noise.

    Why FAQ Schema Still Matters in 2024

    Rich results are shrinking. Google has deprecated review snippets for many entity types, pulled back recipe cards on some surfaces, and restricted FAQ rich results to what it calls "authoritative government and health websites" in the main search results. Before you close this tab — that restriction applies to the blue-link context, not to all surfaces. FAQ schema still fires in voice search (Google Assistant reads structured answers directly), in some featured snippets, in Google Discover, and in certain regional result pages. Plus, having clean structured data signals technical quality to crawlers regardless of whether a rich result is visually rendered.

    In short: implement it correctly on FAQ-style content, stop relying on it as your primary CTR driver, and treat the markup as a technical hygiene baseline.

    The Structure Google Actually Requires

    The FAQPage schema has a rigid hierarchy. The top-level type must be FAQPage, connected to https://schema.org as context. Each question lives in a Question entity nested inside the mainEntity array. Each Question must contain a name property (the question text) and an acceptedAnswer object of type Answer, which holds a text property. That is the minimum viable schema.

    What trips people up is the text field in acceptedAnswer. Google explicitly permits a subset of HTML tags inside it: <a>, <br>, <em>, <p>, <strong>, <ul>, <ol>, <li>, and <h2> through <h6>. Using unsupported tags like <div> or <span> does not break parsing, but those elements get ignored. Injecting JavaScript event attributes or <script> tags inside the answer text will get your markup flagged or rejected outright.

    Character Escaping: The Silent Killer

    JSON-LD sits inside a <script> tag, which means your answer text must be valid JSON. The most common breakage: unescaped double quotes in the answer text. If your answer contains something like Google's "helpful content" update, the raw double quotes will corrupt the JSON structure and the entire schema block becomes unparseable.

    Proper escaping rules for JSON strings: backslashes become \\, double quotes become \", newlines become \n, and tab characters become \t. Control characters below ASCII 32 must be escaped with their Unicode escape sequence. Our generator handles all of this automatically, but if you are hand-writing markup, run it through a JSON validator like jsonlint.com before deploying.

    A second escaping layer matters when your answer contains HTML entities inside a JSON string. The sequence &amp; in HTML, when placed inside a JSON string, must remain &amp; — do not double-decode it. This causes confusion when copying answers from CMS editors that auto-encode ampersands.

    Six Policy Violations That Kill Your Rich Results

    1. Promotional or advertising content. Google's documentation is explicit: FAQ schema must not be used for content whose primary purpose is advertising. Phrases like "buy now," "limited time offer," or "subscribe today" in your FAQ answers are red flags. A question like "Why should I buy from us?" that answers with a sales pitch will not qualify.

    2. Content that does not match the visible page. The most penalised violation. If your JSON-LD lists six FAQ pairs but the page only visibly shows two of them, Google considers this deceptive markup. Every answer in your schema must be findable by a user who is reading your page normally.

    3. Adult, violent, or hateful content. Any page whose primary topic violates Google's content policies is ineligible for rich results regardless of how technically correct the markup is.

    4. Empty or single-word answers. "Yes," "No," and "Contact us" are not answers. Google's quality threshold is not documented numerically, but answers under roughly 20 characters are routinely ignored in practice.

    5. Duplicate questions across the same page. Two Question entities with identical or near-identical name values in a single FAQPage block will cause one or both to be dropped. Consolidate or differentiate them.

    6. Paginated or dynamically loaded FAQs not visible on first render. If your FAQ section requires JavaScript to expand and is not present in the initial HTML response, Googlebot may not see it. The schema block will claim content that the crawler cannot verify, which triggers a mismatch flag. Either server-render the visible FAQ text or lazy-load schema markup only after confirming the DOM is ready.

    Where to Place the Script Tag

    The <script type="application/ld+json"> block can go in the <head> or anywhere in the <body> before </body>. Google parses both locations correctly. For performance, the <head> is slightly preferable because it gives Googlebot the schema context before it encounters the body content, but the difference is negligible. What matters more: one FAQPage block per page. Multiple FAQPage blocks on the same URL are merged by Google, sometimes unpredictably. Keep it to one.

    Testing Before You Push Live

    Use Google's Rich Results Test at search.google.com/test/rich-results and paste either your URL or the raw HTML containing the markup. The tool will show you detected items, warnings, and errors. Pay attention to warnings — they do not break rendering but are signals that Google may downrank or ignore the markup. After confirming the test passes, use Google Search Console's URL Inspection tool on the live URL a few days after deployment to verify Googlebot actually processed the schema.

    One important nuance: the Rich Results Test uses a rendering engine, not a crawler. A page that passes the test can still fail in production if your CMS is stripping the script tag, your CDN is serving cached pre-schema versions, or a plugin is minifying JSON in a way that breaks string escaping. Always cross-reference with Search Console's actual coverage report.

    Quick Implementation Checklist

    Before you copy any schema to production, run through this list: every question appears verbatim on the visible page; every answer appears verbatim or is at minimum a faithful summary of visible content; no promotional language in questions or answers; character escaping is correct (validate the JSON); no duplicate questions; no adult or restricted content; script tag is in a location that Googlebot can read without JavaScript execution; only one FAQPage block on the URL; Rich Results Test returns zero errors. That is the complete bar for correct FAQ schema implementation.

    The generator on this page handles the JSON-LD structure, character escaping, and policy warning checks automatically. Your job is to write honest, visible, useful Q&A content — the markup is just the wrapper.

    FAQ

    What is FAQPage schema and what does it do?
    FAQPage schema is a type of structured data markup written in JSON-LD format that tells Google your page contains question-and-answer content. When Google validates the markup and deems the page eligible, it can display expandable FAQ dropdowns directly in search results beneath your page link, giving users quick answers and potentially increasing click-through rates.
    Can I use HTML tags inside FAQ schema answers?
    Yes, Google allows a specific subset of HTML inside the 'text' field of an acceptedAnswer. Permitted tags include <a>, <br>, <em>, <p>, <strong>, <ul>, <ol>, <li>, and heading tags h2 through h6. Tags like <div>, <span>, or <script> are not permitted and will be ignored or flagged by Google's parser.
    Why is my FAQ schema not showing rich results in Google?
    The most common reasons are: the visible page content does not match the schema markup (Google requires the Q&A to be readable on the actual page), the page contains promotional or advertising-focused content, the JSON-LD has a syntax error from unescaped characters like double quotes, or Google has restricted FAQ rich results for your page category. Use Google's Rich Results Test tool to identify specific errors.
    How many FAQ pairs can I add to one page?
    Google does not publish a hard limit, but practical testing shows that roughly 2 to 10 FAQ items are displayed in rich results. You can include more in your markup, but only a subset will appear in search results. Prioritize the most useful and frequently searched questions at the top of your FAQ list.
    Does FAQ schema help with SEO rankings?
    FAQ schema does not directly boost rankings in the traditional sense — it is not a ranking factor. However, rich results can increase click-through rates from search results, which is an indirect SEO benefit. The structured data also signals technical quality to Google's crawlers and can contribute to visibility in voice search results and Google Assistant responses.
    What content is not eligible for FAQ rich results?
    Google explicitly disqualifies: content that is primarily promotional or advertising in nature, adult or explicit content, content that violates Google's general webmaster guidelines, and FAQ markup where the questions and answers are not visible to users on the actual page. Purely automated or dynamically generated FAQs that are not user-facing may also be excluded.