A JSON-LD FAQPage code block beside the matching visible FAQ questions and answers on a web page.
โ† All Quick Wins
AEO & GEOSEO & Search

Add FAQPage schema, with copy-paste JSON-LD

A JSON-LD template, the matching visible FAQ and the checks to run, plus what Google no longer does with it.

Where this came from:

โ˜† Save

The quick answer

To add FAQPage schema, put a JSON-LD block on the page that lists each question and answer, and make sure the same text is visible to visitors. Google stopped showing FAQ rich results on May 7, 2026, so this will not give you dropdowns, but it still describes a real FAQ section to machines.

Bottom lineAdd FAQPage markup only for a real, visible FAQ, and expect no rich result from Google.
On this page

To add FAQPage schema, put a JSON-LD block on the page that lists each question and its answer, and make sure the same questions and answers are visible in the page content. The template is below. Before you start, know that Google stopped showing FAQ rich results in search on May 7, 2026, so this markup will not give you expandable dropdowns. It is still a valid way to describe a real FAQ section to machines.

Should you add it?

Add FAQPage only if the page has a genuine FAQ section that visitors can read. Skip it if you would be inventing questions just to carry markup, or if the questions are not on the page.

Google changed the feature in two steps. In August 2023 it limited FAQ rich results to well-known government and health sites, and on May 7, 2026 it stopped showing them altogether. You do not need FAQ markup for Google rankings, and it is not required for any AI tool we know of. Google has also said that structured data it does not use does not cause problems for Search, so valid markup that matches a real FAQ can stay where it is.

Our companion guide, what FAQ schema does and does not do, covers this in detail.

The template

If JSON-LD is new to you, structured data for beginners explains what it is and what to add first.

Copy this block, then replace the questions and answers with your own:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is your return policy?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "You can return any unused item within 30 days for a full refund."
      }
    },
    {
      "@type": "Question",
      "name": "How long does shipping take?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Standard shipping takes three to five business days."
      }
    }
  ]
}
</script>

Each question is an object with "@type": "Question", a name holding the question text, and an acceptedAnswer containing an Answer with its text. Add one object to mainEntity for every question.

Step by step

1. Write the visible FAQ first

Add the questions and answers to the page as normal content. Write short, direct answers, in the way how to write answers AI tools can quote describes. The structured data should be a description of this content, not a separate version.

For the template above, the visible part of the page would look like this:

<h2>Frequently asked questions</h2>

<h3>What is your return policy?</h3>
<p>You can return any unused item within 30 days for a full refund.</p>

<h3>How long does shipping take?</h3>
<p>Standard shipping takes three to five business days.</p>

Every name and text in the JSON-LD has a matching heading and paragraph that visitors can read. That match is the whole idea.

2. Copy the template into your page

Place the script block in the head or body of the page. Put the markup in the page's HTML, because markup added only by JavaScript can be missed by tools that do not run scripts. Where it goes depends on your setup:

  • Plain HTML: paste the script block into the page file.
  • WordPress: use a custom HTML block in the page, or your theme's or SEO plugin's custom code option.
  • Shopify: add the script block to the relevant theme template file.
  • A JavaScript framework such as Next.js: render the script tag on the server, so it is in the HTML your server sends.

3. Match the text

The name and text values should match what visitors see. Small formatting differences are fine. Different wording, extra hidden questions, or answers that say something else are not.

4. Escape special characters

JSON is strict. Use straight double quotes around keys and values, and put a backslash before any double quote inside your text, like \"quoted\". Do not leave a trailing comma after the last item in a list. One missing comma breaks the whole block.

5. Keep answers plain

Simple text works best. If you need a link or a list in an answer, keep the HTML basic, and check that your answer reads sensibly without it.

6. Validate it

Paste the page URL or code into the Schema.org Markup Validator to check that the markup is well formed. To catch broken JSON quickly, you can also paste just the JSON (the part between the script tags) into any JSON validator.

Google announced that it would drop FAQ support from the Rich Results Test and from the Search Console FAQ report in June 2026, so those are no longer the place to check it. After you publish, you can use URL Inspection in Search Console to see that Google can fetch the page.

7. Confirm the markup is really in your HTML

Open your page, view its source (in most desktop browsers, right-click and choose View Page Source), and search for application/ld+json. If you find it next to your questions, the markup is in the HTML your server sends.

You can run the same check from a terminal. This command fetches the raw page and counts the lines that mention JSON-LD:

curl -s https://halfdev.com/quick-wins/add-faqpage-schema-copy-paste-json-ld | grep -c "application/ld+json"

A number above zero means the raw HTML carries JSON-LD. A zero for a page where you expect markup means it is probably being added by scripts after the page loads, which some tools will miss.

Rules to follow

  • One FAQPage per page. Put all of the page's questions in a single block.
  • Only for real FAQs. The page should be a list of questions with answers written by you. If visitors can submit their own answers, a different type (QAPage) fits better.
  • Not for advertising. Do not use FAQ markup to promote products inside the answers.
  • Every question must be visible. Never mark up content that is hidden from users.
  • Keep it current. When you change an answer on the page, change it in the markup too.

Common mistakes

  • Marking up questions that are not on the page
  • Adding FAQ markup to every page on the site by default
  • Copying the same FAQ onto many pages
  • Broken JSON from unescaped quotes or trailing commas
  • Expecting a rich result that Google no longer shows

Check what your page carries

Run your page through the free GEO checker to see whether FAQ markup is present. Treat the result as an extra, not as a Google requirement.

FAQ

No. Google stopped showing FAQ rich results on May 7, 2026.

Not as a rule. Valid markup that matches a real FAQ section can stay. Remove it where the FAQ is not really on the page or is only there for markup.

In a script tag in the head or body of the page, in the HTML your server sends.

View the page source and search for application/ld+json. If your questions are next to it, the markup is in the HTML.

Nobody outside the AI companies can see why a tool chose a source, and no AI tool we know of requires FAQ markup. Clear, direct answers on the page matter more.

See how your own site scores

Run the same AEO, SEO, and GEO checks this explainer is about โ€” free, rule-based, no signup.

Run the free scan

Comments

No comments yet โ€” be the first.