Schema markup: most sites are doing it wrong (here's the simple fix)
Schema markup is one of the highest-ROI SEO investments and one of the most consistently botched. After auditing hundreds of implementations, the same five mistakes keep showing up.
Almost every site I audit has some schema markup. Almost none of them have schema that's actually doing what they think it's doing. The mistakes are remarkably consistent — usually one of five patterns. Here they are, with the fix for each.
Mistake 1: Multiple disconnected schema blocks
Most sites add schema by sticking individual JSON-LD blocks wherever the plugin or developer dropped them. You end up with an Organization schema in one place, an Article schema in another, a BreadcrumbList in a third, and none of them reference each other. Google parses them independently and often misses the relationships you actually have.
The fix is the @graph pattern: one JSON-LD block that contains all your schemas as a unified array, with @id values that cross-reference. The Organization referenced as the publisher of an Article should be the same Organization with the same @id.
This sounds pedantic and it isn't. Google's rich results parser handles connected schemas dramatically better than disconnected ones — knowledge panel candidacy and AI Overview citation both correlate with proper graph structure.
Mistake 2: Schema that doesn't match what's on the page
I've seen Recipe schema on pages that aren't recipes, Product schema on category pages, FAQ schema with questions that don't appear anywhere on the visible page. Google's spam team explicitly penalizes this. It's worse than no schema at all.
Rule: every schema property must reference content that's visible to users on the page. If your FAQ schema lists five questions, those five questions must appear in the visible HTML. If your Review schema claims a 4.8-star rating, that rating must be visible. The schema is supposed to mark up what's there, not invent what isn't.
Mistake 3: AggregateRating without actual reviews
Specific case of mistake 2 that deserves its own section because it's so common. Sites add AggregateRating schema with hardcoded 5-star ratings to make stars appear in search results. This is one of the most-policed schema spam patterns. Google will catch it, suppress your stars, and may apply broader trust penalties.
Only use AggregateRating if you have real reviews on the page from real users. The schema should reflect the visible average. If you don't have reviews, don't fake them.
Mistake 4: Article schema missing the parts that actually matter
Most Article schema I see has the bare minimum: headline, datePublished, author. Technically valid. Practically useless. The properties that actually make Article schema useful for AI Overview citation and rich results are the ones most sites skip:
- image: required for rich results, frequently omitted. Should be 1200×630 minimum.
- dateModified: separate from datePublished. Update it when you update the article. Google trusts pages with accurate dateModified more than pages where it equals datePublished forever.
- author: as a Person object with a URL pointing to an actual author page, not just a string name. The URL is what unlocks E-E-A-T credit.
- publisher: as an Organization with a logo. Without it, Article rich results don't render.
- mainEntityOfPage: the canonical URL of the article. Cheap to add, prevents canonical confusion.
Mistake 5: Local business schema without the local signals
For brick-and-mortar businesses, LocalBusiness schema is one of the highest-leverage things you can add — and one of the most commonly half-done. The minimum viable version most sites ship has name, address, and phone number. The version that actually performs adds:
- geo: latitude and longitude coordinates. Helps map placement.
- openingHoursSpecification: structured hours, not just a string. Required for "open now" signals.
- priceRange: "$" through "$$$$" — populates a useful filter.
- servesCuisine (for restaurants), medicalSpecialty (for healthcare), etc. — type-specific properties Google uses for category match.
- sameAs: URLs to your business's profiles on Facebook, Instagram, Yelp, your Google Business Profile. This is what links your schema to the broader entity graph.
How to validate
Two tools you should know about:
Google's Rich Results Test validates against Google's actual rendering rules. If your schema doesn't pass this test, no rich result will appear no matter what other validators say.
Schema.org's validator validates against the spec, which is broader than what Google supports. Useful for catching syntax errors but not for determining what will actually render in search.
If you want to generate clean schema that avoids these mistakes from the start, our Schema Markup Generator builds schemas using the @graph pattern with proper @id references, sane defaults for the properties that matter, and warnings when you try to combine schemas that conflict.
One more thing
Schema markup doesn't directly improve rankings. It improves how your page is presented in search and dramatically increases AI citation likelihood. Adding schema to a thin page won't make it rank. Adding it to a page that already deserves to rank can multiply its SERP real estate.
Order of operations matters. Get the page worth ranking. Then add the schema. Doing it in the other order is a waste.
Ready to Audit Your Website?
Put these insights into action with our free SEO audit tool. Get instant analysis and recommendations.
Start Free SEO Audit✨ 100% Free • AI-Powered • Instant Results