Structured data that actually earns rich results
Valid JSON-LD is not the same as eligible JSON-LD. The gap is usually required properties, mismatched content, or markup describing something the page does not show.
By Sapun Lamichhane · Arcetis
Structured data is the rare SEO investment with a directly observable payoff: your result gets stars, or a price, or an FAQ dropdown, or it does not. That makes it unusually easy to get wrong quietly — the markup validates, the rich result never appears, and nothing tells you why.
Valid is not the same as eligible
A validator confirms your JSON-LD parses and matches the vocabulary. Eligibility for a rich result is a stricter, separate bar: every required property present, values in the expected format, and — the one most people miss — the marked-up content visible on the page to an ordinary visitor.
FAQ markup describing questions a user cannot see on the page is a documented manual-action risk. So is Review markup for reviews that appear nowhere. The rule is simple: markup describes the page, it does not augment it.
Parse and expand, do not string-match
Plenty of tools check for structured data by searching the HTML for a type name. That misses anything using an aliased term or a custom vocabulary prefix, and it produces false positives on any page that happens to mention the word. Expanding the JSON-LD against its @context resolves every term to a fully-qualified IRI first:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme",
"url": "https://acme.example/",
"logo": "https://acme.example/logo.png",
"sameAs": [
"https://www.linkedin.com/company/acme",
"https://x.com/acme"
]
}sameAs is doing more work than it looks like
sameAs is how a search engine reconciles your brand with its profiles elsewhere into a single entity. Getting it wrong is worse than omitting it — pointing at the wrong profile actively confuses entity resolution.
A practical order of work
- 1Organization and WebSite on every page. These establish the entity behind the site and cost nothing to maintain.
- 2BreadcrumbList, which replaces the bare URL in results with a readable hierarchy path.
- 3The one type that matches what the page actually is — Article, Product, LocalBusiness, Event. One accurate type beats five speculative ones.
- 4Only then the optional enrichments: aggregateRating, offers, speakable.
Our Structured Data checker expands your JSON-LD to real schema.org IRIs and reports which entity types and properties are present — as detection rather than as failures, because a page is not defective for lacking markup that does not describe it.