Common Structured Data Errors (and How to Fix Them)

The structured data errors Google's Rich Results Test and Search Console surface most — missing required fields, wrong value types, content mismatch, malformed JSON-LD, and deprecated types — and exactly how to debug each one.

First published: Jul 2, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #29 in Structured Data#59 in On-Page#267 in Technical SEO#360 on the site

Structured data errors split into two kinds: parsing errors that break the markup entirely (malformed JSON-LD — trailing commas, unescaped quotes, a missing colon or brace) and eligibility errors that parse fine but fail a rich-result rule (missing required property, wrong value type, a colliding/duplicate @id, or markup describing content not visible on the page). A missing required property or unparsable JSON blocks the rich result outright; a missing recommended property is only a warning — the rich result usually still shows, less richly. Content mismatch is the one error class with real teeth: it's a policy violation that can trigger a manual action, not just silent ineligibility. A distinct failure mode isn't an error at all — a deprecated/unsupported type (FAQ, removed by May 2026) is valid markup that just no longer earns a visual. Debug with three different tools: the Rich Results Test (Google eligibility + SERP preview, single URL), the Schema Markup Validator (schema.org syntax/vocabulary, any type), and Search Console's Rich result report (site-wide, sampled, over time) — a pass in one answers only that tool's own question. Fixing errors restores rich-result eligibility — structured data isn't a ranking factor, so a fix wins back a SERP visual, not a ranking.

TL;DR — Structured data errorsStructured data errors are problems in a page's schema.org markup that either break parsing entirely (malformed JSON-LD — trailing commas, unescaped quotes, a missing colon or brace) or parse fine but fail a search engine's eligibility rules for a rich result: missing required properties, wrong value types, a colliding/duplicate @id, or markup describing content that isn't visible on the page. Google surfaces them in the Rich Results Test and Search Console's Rich result report; schema.org's Schema Markup Validator checks general syntax/vocabulary. Fixing them restores rich-result eligibility — structured data isn't a ranking factor. split into parsing errors (malformed JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. — trailing commas, unescaped quotes, missing colons or braces — that break the markup so badly Google can’t determine the type; these land in the Unparsable structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. report) and eligibility errors (the markup parses but fails a rich-result rule: missing required property, wrong value type, or markup describing content not visible on the page). Errors can block; warnings are non-critical — a missing required property can kill feature eligibility, while a missing recommended one generally preserves eligibility but may limit available information. Content mismatch is the one class with teeth — a policy violation that can trigger a manual action, not silent ineligibility. A separate failure mode isn’t an error at all: a deprecated/unsupported type (FAQ, gone by May 2026) is valid markup that earns no visual. Debug with three different tools — Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test (Google eligibility + preview), Schema MarkupSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. Validator (schema.orgSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. syntax, any type), and Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results.’s Rich result report (site-wide, sampled). Structured data isn’t a ranking factor, so a fix wins back a SERP visual, not a ranking.

Evidence for this claim Google structured data must follow technical, quality, relevance, and feature-specific guidelines; valid syntax alone is insufficient for eligibility. Scope: Current Google structured-data policies. Confidence: high · Verified: Google Search Central: Structured data general guidelines Evidence for this claim Google recommends Rich Results Test for supported feature validation and URL Inspection for deployed-page status; warnings may preserve eligibility while errors can block it. Scope: Current Google structured-data validation workflow. Confidence: high · Verified: Google Search Central: Generate structured data with JavaScript

Errors vs. warnings — what actually blocks a rich result

Debug in order: make the markup readable, make the item eligible, then verify that it matches the page and policy. Source: Google Search Central

Step one checks whether the JSON-LD parses and fixes malformed syntax first. Step two checks required rich-result fields and valid value types; errors can block eligibility while warnings usually identify recommended fields. Step three checks whether the markup matches visible content and Google policy. Passing one layer does not prove the next, and valid markup does not guarantee display.

© Patrick Stox LLC · CC BY 4.0 ·

Before the taxonomy, get this distinction straight, because most guides use “error” as a catch-all and it causes needless panic.

  • An error means a required property is missing or invalid, or the markup is unparsable. The item can’t be a rich result until you fix it.
  • A warning means a recommended (not required) property is missing. The rich result can still show — just less completely.

Google’s own guidance leans toward accuracy over padding: “it is more important to supply fewer but complete and accurate recommended properties rather than trying to provide every possible recommended property with less complete, badly-formed, or inaccurate data.” In other words, don’t chase every warning by stuffing in half-accurate data — that can create worse problems than the warning it solves.

Worth knowing: even Google’s own reporting isn’t infallible here. In October 2022 Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. had a bug where some issues were mislabeled as errors when they were actually warnings; Google’s fix moved them “from the critical error table to the warning table,” and clarified it was “strictly a reporting issue and did not affect whether or not a rich result could be displayed” (Search Engine Land, Oct 2022). The lesson: when in doubt, cross-check a flagged item against the Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test rather than trusting one report blindly.

Malformed JSON-LD — the “unparsable” errors

This is the most fundamental error class: the markup is broken badly enough that Google can’t even determine the intended type. Google files these in a separate Unparsable structured data report rather than a per-type report, because there’s no type to attribute the item to. Google’s own description: an item lands here because of a “serious syntax error” and “the intended type of structured data (Job, Event, and so on) could not be determined because of the parsing error.”

The usual culprits:

  • Trailing commas. A comma after the last property in an object or array is valid in JavaScript but invalid in JSON. This is the single most common way hand-written or template-concatenated JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. breaks.
  • Unescaped quotes. A double quote inside a string value that isn’t escaped (\") terminates the string early. Google’s documented error for this is “Bad escape sequence in string.” Product names, review text, and descriptions with inch marks or quoted phrases are the classic offenders.
  • Missing colons or braces. Google documents these verbatim as “Parsing error: Missing ’:’” and “Parsing error: Missing ’,’ or ’}’” — usually a copy-paste or string-concatenation accident.
  • Wrong value type inside otherwise-valid JSON. Google’s “Incorrect value type” — e.g., a numeric field wrapped in quotes when a number was expected. (This shades into the eligibility errors below; when it’s bad enough to break parsing, it lands here.)

How to debug: strip to an empty object, rebuild piece by piece

Google’s own debugging tip for unparsable markup is refreshingly low-tech: “If you are having problems finding the error, try starting from an empty object, then add back content from your broken code piece by piece.” Paste the stripped-down object into the Rich Results Test, confirm it parses, then add properties back until it breaks — the last thing you added is your culprit.

One caution straight from Google: fixing a parsing error “might trigger additional warnings or errors that were hidden because the item could not be parsed at all.” One fix can unmask the next layer, so re-test after every change.

Missing required fields and wrong value types

Once the JSON parses, the next error class is about the contents: is every required property present, and is every value the right type?

Every Google-supported type has required properties (leave one out and you lose eligibility — that’s an error) and recommended ones (leave one out and you get a warning, but the rich result can still show). Search Console’s guidance is to open the report, “click an issue to see affected pages,” and use the “Why items are invalid” table to prioritize — errors first, then warnings.

Type mismatches — string where a number, URL, or date is expected

The classic eligibility bug: the value is there, but it’s the wrong type. A price field containing a date. A rating provided as "five stars" instead of a number. A URL field containing plain text. Google flags this as an invalid/unexpected value type.

Bing is worth a note here because, per its own structured data help documentation, it behaves differently: rather than erroring loudly, Bing’s crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. are documented to ignore an annotation whose value type is wrong (a price field holding a date, an Event with no date, a Person with no name) rather than surface a red error. So don’t assume “no Bing error” means “correct” — Bing’s public documentation is thinner and less granular than Google’s (it doesn’t publish a per-type required-vs-recommended breakdown or a report as detailed as the Rich result report), and its tolerance for mismatched types is a silent-drop, not a loud-fail. Lean on Google’s Rich Results Test for the detailed error taxonomy.

Duplicate @id values and entity confusion

A subtler one that CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. plugins cause constantly: reusing the same @id for two different entities, or letting a plugin emit a fresh, colliding @id on every page instead of a stable one. This is not a parsing failure — the JSON itself is well-formed, so it doesn’t land in the Unparsable structured data report. @id is how JSON-LD nodes reference each other inside a @graph, so a collision is an entity-identity problem: it creates ambiguity about which node a reference actually points to. This gets worse on sites where multiple sources (the theme and a schema plugin) both auto-generate Organization, WebSite, and WebPage nodes.

The fix is a stable, unique @id per real-world entity — a URL-fragment identifier like https://example.com/#organization, reused consistently across the site, not regenerated per page. This is the mirror image of the canonicalizationHow search engines pick one canonical URL among duplicates and consolidate signals onto it. problem, where one stable identifier per real thing is likewise the whole game.

Nested-property errors (a missing name inside author)

Some required properties live inside other objects — author.name, aggregateRating.ratingValue. A missing one used to produce a vague error like Missing field "name" that could point anywhere on the page. In March 2022 Google added nested context so the same error now reads Missing field "name" (in "author") — a small change that makes these far easier to locate. (Anyone with an open “validate fix” request at the time had to re-trigger it, since the old issue IDs were retired.) If you see a nested-property error, read the parenthetical — it tells you exactly which object is short a field.

Content mismatch — the policy-violation error class

This is the one error class that deserves its own section, because the consequence is categorically worse than “no rich result.” Everything above is a technical problem. Content mismatch is a policy problem.

Google’s General Structured Data Guidelines are explicit on two points:

  • “Don’t mark up content that is not visible to readers of the page.”
  • “Your structured data must be a true representation of the page content.”

Marking up a 4.8-star rating that appears nowhere on the page, describing content that’s hidden or served only to crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index., or labeling something as one thing when it’s really another — Google’s own examples include a sports live-streaming site labeling broadcasts as local events, and a woodworking site labeling instructions as recipes — all violate this.

Consequences: manual actions vs. silent ineligibility

A technical error costs you the rich result silently. A content-mismatch policy violation can cost you more: “If your page contains a structured data issue, it can result in a manual action. A structured data manual action means that a page loses eligibility for appearance as a rich result; it doesn’t affect how the page ranks in Google web search.” Manual actions show up in the Manual Actions report in Search Console — a place you never want to see a structured-data entry.

A common quieter version of this: templated, non-unique schema. John Mueller’s long-standing guidance is that “the structured data on a website, or on a page, should be specific to that particular page” (via Search Engine Journal). A site-wide Organization block copy-pasted with the same review count onto every page reads as a representation problem, not just a sloppy one.

Why validation isn’t enough. This is the answer to “my markup validates clean — why no rich result?” Validators check syntax and Google’s technical eligibility rules. They do not check Google’s content-quality and spam-policy layer. A syntactically perfect, policy-violating implementation can still be denied a rich result or hit with a manual action. Passing the Rich Results Test is necessary but not sufficient.

Using a deprecated or unsupported type

Here’s a failure mode that isn’t technically an “error” at all — and it trips people up because nothing turns red. Your markup is perfectly valid, it parses, it passes the schema.org validator, and yet no rich result will ever show, because Google turned the feature off.

Case study: FAQ rich results (deprecated 2026)

The timely example. Google added a deprecation notice to the FAQ rich result documentation, stating the feature “will no longer appear in Google Search starting May 7, 2026,” then in mid-2026 removed the FAQ documentation, Rich Results Test support, and Search Console reporting because “the FAQ rich result feature is no longer shown in Google Search results.”

The nuance that matters: FAQPage is still a valid schema.org type, and Google still parses it. The type isn’t “wrong.” It simply no longer earns the visual treatment. So the correct reaction to “is my FAQ schema now an error?” is no — leaving the markup in place doesn’t hurt anything; it just no longer buys you a SERP enhancement. Don’t panic-strip valid markup because the visual went away.

Other retired types

FAQ isn’t alone. Google has repeatedly retired rich-result types when analysis showed they weren’t widely used or didn’t add user value: HowTo rich results were removed from desktop back in 2023; a June 2025 batch retired seven more niche types (including Claim Review, Estimated Salary, Learning Video, Special Announcement, and Vehicle Listing); and Practice Problems structured data was deprecated starting January 2026. In each case the schema.org type usually remains valid — it just stops renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM..

How to tell if a type is still “live”

Check Google’s Search Gallery — the canonical list of types that currently earn rich results. If a type isn’t in the gallery, valid markup for it won’t produce a visual, no matter how clean it is. Re-check the gallery periodically; Google revises it often.

How to actually debug — three different tools

The single most common meta-mistake is conflating the tools. There are three, and they answer different questions.

Rich Results Test — Google eligibility + SERP preview

The Rich Results Test takes a single URL or a code snippet and checks the subset of markup Google uses for rich results, then previews how the result might appear. Google frames it as “an easy and useful tool for validating your structured data, and in some cases, previewing a feature in Google Search.” Use it during development and to spot-check a fix. It does not validate schema types Google doesn’t use for rich results.

Schema Markup Validator — schema.org syntax, any type

The Schema Markup Validator is run by schema.org, not Google. It checks general syntax and vocabulary compliance for any schema.org type — including ones Google doesn’t turn into rich results (e.g., Action schema). Passing it means your markup is well-formed schema.org; it does not mean you’re eligible for a Google rich result. This is the tool for “is my JSON-LD structurally correct?” independent of any search engine.

The two-tool trap: these are genuinely different tools, and passing one does not mean passing the other. The split has confusing history — Google tried to fully deprecate its old “Structured Data Testing Tool” in July 2020, reversed course after backlash that December, then refocused it into today’s schema.org-run validator by mid-2021. Plenty of old blog posts still point people at the dead tool name. For 2026: Rich Results Test for Google eligibility, Schema Markup Validator for schema.org syntax.

TIP Debug syntax before feature eligibility

For malformed JSON-LD, unknown properties, wrong value shapes, and conflicting entity IDs, start with the Schema Markup Validator Free

  1. Paste the failing JSON-LD or full HTML and fix parser errors first.
  2. Resolve schema.org vocabulary and entity-reference findings without inventing values that are not on the page.
  3. Then test Google eligibility separately and use Search Console to monitor the deployed site over time.

Search Console’s Rich result report — site-wide, sampled, over time

The Rich result report (the older nav and a lot of practitioners still call this the “Enhancements” reports) is the only one that’s ongoing and site-wide rather than a single-URL spot check. Google: “a valid item is an item that doesn’t have any critical issues and can appear on Google as a rich result. An invalid item has at least one critical issue preventing it from appearing as a rich result.” Two limitations to keep in mind: per-type reports only appear once Google finds valid markup of that type, and “the reports aren’t a comprehensive list of all detected items. They show a sample of detected items to help assess the quality of your structured data.” It’s a monitoring surface, not an exhaustive audit.

A pass answers only that tool’s own layer. Rich Results Test, Schema Markup Validator, and the Rich result report each check a different question, so a clean result in one tells you nothing about the other two — a pass in the Schema Markup Validator doesn’t mean Google’s Rich Results Test would pass, and neither proves what the Rich result report will show once Google actually crawls the deployed page.

Validating a fix (and why it takes a while)

Once you’ve fixed an issue, Google’s documented workflow is: fix on-site, confirm the page is crawlable (not blocked by robots.txtA Google Search Console Page Indexing status: the URL was excluded from indexing because your robots.txt disallows crawling it. Usually intentional and benign — robots.txt blocks crawling, not indexing. or noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed.), spot-check with URL Inspection, then “click Validate fix on the issue’s details page to start Google’s validation process.” Set expectations on timing — Google says validation “can take two weeks or more, depending on crawl frequencyCrawl frequency is how often a search engine comes back to re-fetch a page it already knows about. Popular pages that change often get refreshed many times a day; stable pages can go weeks or months between crawls — and you influence it indirectly, not by setting a dial..” It’s not instant; Google has to re-crawl the affected pages.

The one framing that keeps you sane

Fixing structured data errors is about rich-result eligibility, not rankings. As John Mueller put it (reported by Search Engine Roundtable, April 2025), “structured data won’t make your site rank better” — it’s for displaying the search features in Google’s gallery. So the payoff of a clean fix is a SERP visual (stars, breadcrumbsBreadcrumbs are a secondary navigation trail (Home > Category > Page) that shows where a page sits in a site's hierarchy. They create internal links that pass PageRank, and when marked up with BreadcrumbList structured data they can drive the path Google shows in desktop search results., price) and the click-through it can earn — never a ranking bump. Keep that straight and you’ll prioritize the right errors: the ones blocking a visual you actually want, not every warning in the report.

Where this sits

This is a deep-dive sibling under the Structured Data for SEOStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. hub — the same sub-cluster as the schema-markup, JSON-LD, and rich-results deep dives. The error taxonomy here is the troubleshooting counterpart to those: they cover what to build, this covers what breaks and how to see it. For the broader picture of on-page signals it lives alongside — meta tagsMeta tags are HTML elements in a page's head that pass metadata about the page to search engines and browsers. For SEO only a few matter — the title element, the meta description, and the robots meta tag — while meta keywords and most others are ignored., header tagsHeader tags (heading tags) are the HTML elements <h1> through <h6> that mark the structural hierarchy of a page's content. They help users, search engines, and screen readers understand what each section is about., image SEOImage SEO is optimizing the images on your pages so search engines can discover, crawl, index, and rank them — in Google Images and visual search, and as part of standard web results. It spans file format, filenames, alt text, compression, responsive markup, structured data, and image sitemaps. — see the on-page SEO cluster.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.