Schema Markup Not Showing Rich Results? How to Validate and Fix It
You added the JSON-LD, the validator says it's valid, and weeks later Google still shows a plain blue link. No stars, no FAQ dropdown, no price. This is the most common structured-data complaint there is, and almost none of it is caused by broken syntax.
Valid schema and a rich result are two different things. Validation tells you Google can read your markup. A rich result is Google choosing to display it — and that choice depends on eligibility rules, content matching, and trust signals that no validator checks. Here's how to tell which problem you actually have.
First: Validate vs. Eligible Are Not the Same Test
There are two questions, and people conflate them constantly:
- Is my markup syntactically valid? — Can a parser read it without errors?
- Is my page eligible for a rich result? — Does it meet Google's content and policy requirements for that result type?
A schema.org validator answers question 1. It will happily pass markup that Google will never show. Paste your JSON-LD into our Structured Data Validator to confirm it parses cleanly and has the required properties for its type — that clears question 1 in a few seconds. Then you can spend your time on question 2, which is where almost every "valid but not showing" case actually lives.
The Real Reasons Google Ignores Valid Schema
1. The markup doesn't match visible content
This is the single biggest cause. Google's structured data guidelines require that your markup describe content that's actually on the page and visible to users. If your FAQPage schema contains five questions but the page only shows three, or your Product schema lists a price the page never displays, Google treats it as misleading and silently drops the rich result.
The fix: every value in your JSON-LD must have a visible counterpart on the rendered page. Marked-up review rating? It needs to be shown. Marked-up FAQ answer? It needs to be in the page body, not hidden behind a tab Google can't expand. When in doubt, view the page as a user and check each schema field exists in plain sight.
2. The page is too new or too low-trust
Rich results are earned, not granted. A brand-new page on a low-authority domain can have flawless Article schema and still show nothing for weeks. Google needs to crawl the page, index it, and decide the result is worth enhancing. New domains and thin pages sit at the back of that line.
There's no markup fix here — it's a patience-and-authority problem. Confirm the page is indexed first (search site:yourdomain.com/your-page in Google). If it's not indexed, no schema in the world will produce a rich result, because there's no result to enhance.
3. You're eligible, but Google chose not to show it
Even perfect, matching, trusted markup is not a guarantee. Google describes rich results as eligible, never promised. Search features change constantly: Google deprecated FAQ rich results for most sites in 2023, narrowed HowTo to almost nothing, and reshuffles which result types appear by query intent. If your schema type was quietly demoted, your markup is fine and the feature is just gone for your kind of site.
Check Google's current Search Gallery documentation for your schema type before assuming you have a bug. If the feature still exists, move on. If it was deprecated, your effort is better spent elsewhere.
4. JSON-LD that never renders
If you inject schema with client-side JavaScript that runs after a delay, or behind a consent banner, or only on user interaction, Googlebot may never see it. Google does render JavaScript, but it's not instant and it's not guaranteed for every page on every crawl.
The safest place for JSON-LD is server-rendered, in the page's initial HTML <head> or <body>. View source (Ctrl+U), not the inspector — if your <script type="application/ld+json"> block isn't in the raw HTML, that's your problem. The DOM inspector shows the post-JavaScript state, which can hide this issue completely.
5. Required properties are missing (even if "valid")
Some validators pass markup that's technically well-formed JSON but missing properties Google requires for the rich result. Product schema needs an offers, review, or aggregateRating to show anything interesting. A Product rich result with only a name and image is valid JSON-LD and ineligible for the price/rating treatment.
The distinction matters: recommended properties improve your result, required properties gate it entirely. Our Structured Data Validator flags missing required fields specifically, which is the gap a generic JSON linter won't catch.
A Debugging Workflow That Actually Narrows It Down
Run these in order. Each step rules out a category so you stop guessing.
Step 1 — Confirm it parses. Paste the JSON-LD into the Structured Data Validator. Fix any syntax errors or missing required properties before doing anything else. No point debugging eligibility on broken markup.
Step 2 — Confirm Google can see it. Open view-source on the live URL and search for application/ld+json. If it's not in the raw HTML, your JavaScript injection is the issue — move it server-side.
Step 3 — Confirm the page is indexed. Search site:yourdomain.com/exact-page-url. No result means index it first; rich results require an indexed page.
Step 4 — Confirm content matches markup. Read the rendered page and check every schema value appears visibly. Hidden, tabbed, or absent content is the most common silent killer.
Step 5 — Confirm the feature still exists. Check the Search Gallery for your schema type. Deprecated feature means your markup is fine and the result is simply gone.
Step 6 — Wait and re-check. If steps 1-5 pass, request indexing in Search Console and give it one to three weeks. Rich results often appear on a later crawl, not the next one.
If you reach step 6 with everything green, you don't have a markup bug. You have a normal, eligible page waiting in Google's queue.
Stop Hand-Writing the Markup
A large share of these problems start at generation time — a stray comma, a wrong property name, an @type that doesn't exist. Rather than debug syntax after the fact, generate clean JSON-LD up front with our Schema Markup Generator, which only emits valid property sets for each type. It won't make Google show the result, but it removes the entire "is my syntax broken" category from the equation, so you can focus on the eligibility issues that actually cause most failures.
The same matching logic applies to FAQ schema and the rest of the type-specific markup — generate it correctly, mirror it in visible content, confirm it's server-rendered, and then let Google's crawl-and-decide cycle run.
The One-Line Diagnosis
If you remember nothing else: a validator that says "valid" is necessary but not sufficient. Rich results need valid markup and matching visible content and an indexed, trusted page and a feature Google still supports for your query. When the rich result doesn't appear, it's almost never the syntax — it's one of the other three. Start at the Structured Data Validator to clear the syntax question in seconds, then work down the list.
Ready to try it?
Validate JSON-LD structured data for SEO. Check for syntax errors, missing required fields, and get recommendations for Article, LocalBusiness, Product, FAQ, and more.
✅ Structured Data Validator — Free Online ToolGet notified about new SEO tools
More free tools coming soon — keyword research, sitemap generator, and more.