Structured Data Errors That Kill Rich Results

By · Published · Updated

Structured Data Errors That Kill Rich Results

Rich results are weirdly fragile. You can have perfect JSON-LD that parses without a single warning in Google’s Rich Results Test, and still get nothing in the SERP. You can also have slightly broken schema that keeps working for months until Google updates its parser and your carousel just vanishes. The gap between “technically valid” and “actually showing up” is where most of the damage happens.

The errors that actually matter

Most structured data problems fall into three buckets, and each one fails quietly in its own way.

Syntax errors that break parsing. Missing commas, unescaped quotes in a product description, a stray trailing comma that Chrome’s console tolerates but Google’s parser does not. I audited a site where a product name had a backslash in it - a guitar model, something like AC/DC tribute stuff - and the whole JSON-LD block silently failed. The validator said “parse error” and moved on. The programmer who shipped it had tested in a browser console that was more forgiving than Google’s parser.

Missing required properties. This is the big one. Product needs name, image, and either offers, review, or aggregateRating. Recipe needs name, image, and recipeIngredient. FAQPage needs actual Question and acceptedAnswer entities with text in them, not empty strings pulled from a CMS field nobody filled in. If the required field is empty or missing, Google’s tester marks it a warning, and a warning is Google saying “nice try, no rich result.”

Schema type mismatches. Marking up an article as Product. Marking up a category page as FAQPage. Marking up reviews that are actually testimonials copied from a sales deck. Google catches these now, and the penalty is usually a manual action that nukes every rich result on the domain.

What the validators miss

Google’s Rich Results Test is great, but you run it one URL at a time. That works fine when you have twelve pages. It does not work when you have 80,000 product pages and a template change just broke schema on 60,000 of them.

The other thing validators miss is consistency. A Product page with price: 29.99 in the JSON-LD and $34.99 in the visible HTML is a lie Google will eventually catch. No tool that only looks at the JSON-LD block will spot this. You need to compare the structured data against the rendered page. If your schema is injected via JavaScript, what Googlebot actually renders versus what you think it sees can also be a source of silent failures worth auditing separately.

How BSA handles it

This is exactly the gap BSA was built for. Black SEO Analyzer checks the structured data on every URL it crawls: JSON-LD that doesn’t parse, items missing @type, missing required and recommended properties for the type you used, and deprecated Schema.org properties. Missing priceCurrency? You get the property and the type it belongs to, on every URL where it’s missing, not a red dot. The checks that need judgment, like availability hardcoded to InStock on an out-of-stock product or two plugins injecting conflicting Product blocks, are a short script away, because BSA stores the full HTML of every page it crawls.

The output is JSON. You can diff it between deploys. A programmer reviewing a PR sees “this change broke Product schema on 4,200 pages” before merging, not after traffic craters. If you run a large ecommerce catalog, the overlap between schema errors and broader ecommerce technical SEO issues at scale is worth understanding before you start fixing templates.

What to actually do this week

  1. Run your top 20 templates through Google’s Rich Results Test. Not individual URLs - templates. One product page, one category, one article, one FAQ. Most people skip this and then wonder why fixing one page didn’t fix anything.
  2. Check every required field. If anything is empty or hardcoded, fix the source. Understanding why schema markup matters beyond just rich results helps prioritize which types to fix first.
  3. Compare the schema values against the visible HTML. Price, availability, review count, author name. They should match.
  4. If you have more than a few hundred pages, use a crawler. Manual testing stops scaling fast. The same reason all-in-one SEO tools miss structured data issues at scale is why purpose-built crawlers exist.

Fix the template. The rich results sort themselves out.

BSA ships a real CLI and JSON output. CLI docs — or grab the trial if you want it in CI.

-Sethers

Discover hundreds of SEO Issues in Seconds

Without Monthly Subscriptions

Comprehensive technical SEO analysis powered by ML and 16 specialized modules. Optional AI-powered insights from Claude, GPT-4, or Gemini. Get actionable insights in seconds, and never pay monthly fees again.

Download Free Trial

I use AI to generate images for my posts and for general editing, updates, and ironically SEO purposes. I used to draw all of the images for my personal blog (taleas) myself, but as the volume of content I produce has increased, I've turned to AI tools to help create visuals that complement my writing. I go out of my way to generate images that look strange, and don't represent real people. If you ever want to chat about my use of AI, please reach out.