FAQ Schema Invalid or Snippet Gone: 2026 Fix Guide

FAQ rich results vanished or Rich Results Test errors on FAQPage? Google deprecated the feature in May 2026. What that means and how to keep your schema valid.

Read this first. If your FAQ rich result disappeared from Google’s search results in 2026, that is almost certainly not a bug in your schema. Google deprecated the FAQ rich result feature: it stopped showing FAQ dropdowns in search on May 7, 2026, for every site including the government and health domains that kept it after the 2023 cutback. There is nothing to “fix” to get the SERP dropdown back, because the feature no longer exists. Your FAQPage JSON-LD is still valid markup, it just no longer produces a Google rich result.

This guide does two things: (1) confirms whether your missing snippet is the deprecation (it usually is) versus a real schema error, and (2) keeps your FAQPage markup valid and accurate, because Bing still renders it and AI answer engines lean on the visible Q&A it mirrors.

TL;DR

  • Snippet vanished in 2026? That is the deprecation, not your code. No action restores the Google dropdown.
  • Leaving the markup is safe. Google confirmed no penalty and no manual action for keeping FAQPage JSON-LD in place. Remove it only if you want a smaller payload.
  • Still worth keeping valid for Bing, DuckDuckGo, and AI answer engines (ChatGPT search, Perplexity, Gemini, Google AI Overviews) that read the visible Q&A your schema mirrors.
  • Rich Results Test errors on FAQPage after June 2026 may be because the tool dropped FAQ support entirely. Validate the raw JSON-LD with the Schema Markup Validator instead.

The Google deprecation timeline (as of June 2026)

Google is removing FAQ support in phases. Source: the FAQPage documentation deprecation notice.

DateWhat changedImpact on you
Aug 2023FAQ rich results limited to “well-known, authoritative government and health” sitesMost sites already lost the dropdown
May 7, 2026FAQ rich results stopped appearing in Search for everyoneYour dropdown disappears; nothing you can do
Jun 2026FAQ search-appearance filter, the rich result report, and Rich Results Test FAQ support removedSearch Console FAQ report and RRT FAQ checks go away
Aug 2026Search Console API support for FAQ rich result data removedAny automated FAQ reporting via the API breaks; migrate it

If you were tracking FAQ impressions in Search Console or pulling FAQ data through the Search Console API, plan for those to stop. The June-to-August gap exists specifically so API consumers have time to adjust.

Step 0: Which bucket are you in?

Run this decision check before touching any code.

SymptomMost likely causeWhat to do
Dropdown was showing, then vanished in 2026Deprecation (May 7, 2026)Nothing restores it; keep schema valid for other consumers
FAQ report in Search Console went empty / “no items”Deprecation (report removed June 2026)Expected; stop monitoring that report
Rich Results Test shows “FAQ not supported” after June 2026RRT dropped FAQ supportValidate with validator.schema.org instead
validator.schema.org shows real JSON-LD errors (missing field, bad nesting)Genuine schema bugFix per the sections below
You never had the dropdown but want valid markup for Bing / AINo bugUse the parity + validity checklist below

Only the last two rows are something you can act on. The first three are Google policy, not a defect in your site.

Keep the markup valid: genuine schema errors

These are the FAQPage mistakes that still matter for any consumer that reads the markup (Bing, AI answer engines, your own internal tooling). Validate against validator.schema.org, which still checks FAQPage even after Google’s Rich Results Test dropped it.

1. JSON-LD has more or fewer Q’s than the visible page

Your page shows 5 FAQ items. The JSON-LD has 8 (leftovers from a previous version), or vice versa. Consumers that cross-check markup against rendered content distrust the mismatch.

How to spot it:

# Count visible FAQ items
curl -s "https://site.com/article" | grep -c 'class="faq-item"'

# Count JSON-LD Question objects
curl -s "https://site.com/article" | grep -oP '"@type":"Question"' | wc -l

The two counts should match.

2. Question text differs between visible and JSON-LD

Visible question: How long does AdSense approval take? JSON-LD: "name": "What's the AdSense approval timeline?"

Semantically the same, character-different. Any consumer that treats the JSON-LD as canonical sees a mismatch with the rendered page.

How to spot it — extract both and diff:

# Visible questions
curl -s URL | grep -oP '<h3 class="faq-q">\K[^<]+'

# JSON-LD questions
curl -s URL | grep -oP '"@type":"Question","name":"\K[^"]+'

3. Answer missing, too short, or not in acceptedAnswer.text

Each Question needs a populated acceptedAnswer.text:

{
  "@type": "Question",
  "name": "...",
  "acceptedAnswer": {
    "@type": "Answer",
    "text": "Full answer here, substantive and self-contained."
  }
}

Plain text in text is fine. If you embed HTML, it must be valid and render to meaningful text. Aim for answers that actually resolve the question (roughly 50+ characters and self-contained, not a one-line referral).

How to spot it: confirm every acceptedAnswer.text exists and is non-trivial. A bare "see our pricing page" referral is not a real answer and AI extractors skip it.

4. FAQPage used on pages without a real FAQ

Marking up a product-info block as FAQPage was never legitimate, and now it buys you nothing on Google either. Only mark up a section that genuinely answers user questions in a question/answer format.

How to spot it: read the page. If there is no section that reads like Q&A, remove the FAQPage schema entirely.

5. Hidden answers (still matters for AI / Bing)

An accordion that hides answers until clicked: the HTML contains them, so a parser sees them, but a human and some renderers do not. With Google’s rich result gone this is no longer a Google compliance issue, but visible-by-default answers still serve no-JS users and give AI answer engines clean, rendered text to cite.

How to spot it: disable JavaScript in DevTools, reload, and confirm the answers render. If not, ship the answer in server-rendered HTML and add the toggle as progressive enhancement:

.faq-answer { display: block; }  /* not display: none */

How to fix it cleanly

Step 1: Validate the raw JSON-LD

After June 2026 the Rich Results Test no longer checks FAQ, so use the Schema Markup Validator. Paste the URL or the JSON-LD block and fix any structural error (missing acceptedAnswer, malformed nesting, bad escaping).

Step 2: Generate Q’s from a single source

The durable fix for parity bugs is to render the visible UI and the JSON-LD from one array, so they can never drift. In your MDX article frontmatter:

faq:
  - q: "How long does AdSense approval take?"
    a: "Approval typically takes 1-4 weeks, but can run 6-8 weeks for brand-new domains with thin history."
  - q: "..."
    a: "..."

Template renders both the UI and the JSON-LD from this array:

---
const { faq } = Astro.props.frontmatter;
const jsonLd = {
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": faq.map(item => ({
    "@type": "Question",
    "name": item.q,
    "acceptedAnswer": { "@type": "Answer", "text": item.a },
  })),
};
---
<section class="faq">
  {faq.map(item => (
    <article>
      <h3 class="faq-q">{item.q}</h3>
      <p class="faq-a">{item.a}</p>
    </article>
  ))}
</section>
<script type="application/ld+json" set:html={JSON.stringify(jsonLd)}></script>

UI and JSON-LD are now guaranteed identical.

Step 3: Add a CI parity check

Catch drift before it ships. A minimal check counts visible questions versus JSON-LD Question objects per built page and fails the build on mismatch:

vis=$(grep -c 'class="faq-q"' dist/article/index.html)
ld=$(grep -oP '"@type":"Question"' dist/article/index.html | wc -l)
[ "$vis" -eq "$ld" ] || { echo "FAQ count mismatch: $vis visible vs $ld in JSON-LD"; exit 1; }

Step 4: Decide whether to keep the markup

There is no penalty for leaving it, and Bing plus AI answer engines still read it. Keep it if your pages have real Q&A sections. Remove it only if you want a leaner page or no longer maintain the content. Do not mark up non-FAQ content as FAQPage — that earns nothing now.

How to confirm it’s resolved

  1. Parity: the visible question count equals the JSON-LD Question count (Step 3 check passes).
  2. Validity: validator.schema.org reports no errors on the FAQPage block.
  3. Expectations set: you are no longer waiting on a Google FAQ dropdown — that feature is gone as of May 7, 2026.
  4. Optional, Bing: Bing Webmaster Tools URL Inspection still recognizes valid FAQPage markup, so if you care about Bing, confirm there.

FAQ

  • Will leaving FAQPage schema in place hurt my Google rankings? No. Google confirmed there is no penalty and no manual action for keeping FAQPage JSON-LD; it simply will not produce a rich result anymore.
  • My FAQ rich result disappeared in 2026 — did I break something? Almost certainly not. Google stopped showing FAQ rich results for everyone on May 7, 2026. No schema change brings the dropdown back.
  • Why does Rich Results Test no longer show FAQPage? Google removed FAQ support from the Rich Results Test in June 2026. Validate the markup with validator.schema.org instead.
  • Is FAQ schema still worth adding in 2026? Yes, if your page has genuine Q&A. Bing still renders it, and AI answer engines extract the visible Q&A the schema mirrors. Just stop expecting the Google SERP dropdown.
  • Should I delete my FAQPage markup? Optional. It is harmless to keep and useful for non-Google consumers. Delete it only for a leaner payload or if the page no longer has a real FAQ.
  • What happens to my Search Console FAQ data? The FAQ search-appearance filter and rich result report were removed in June 2026, and Search Console API FAQ support is removed in August 2026. Migrate any automated reporting that depended on it.

Tags: #SEO #Troubleshooting #Debug #Structured data #FAQ schema #JSON-LD