Quick Overview The 10 Mistakes

Before diving into each mistake in detail, here's a quick reference table showing all 10 mistakes, their severity, and what they cause:

#MistakeSeverityResult
1Missing @contextCriticalSchema completely ignored
2Missing @typeCriticalSchema completely ignored
3Invalid JSON syntaxCriticalSchema cannot be parsed
4Schema doesn't match page contentCriticalManual penalty risk
5Missing required fieldsHighRich results suppressed
6Wrong date formatMediumValidation error
7Broken image or URLMediumRich result thumbnail missing
8Using wrong schema typeMediumWrong rich result or none
9Outdated or expired valuesMediumRich results suppressed
10Schema in body instead of headLowMinor display issues

Check your schema for these mistakes now

Free schema validator instant results, no signup needed

Validate Schema Free →

The 10 Mistakes In Detail

1
Missing @context
Most common · Affects all schema types
Critical

The @context field tells Google which vocabulary you're using. Without it, Google has no idea how to interpret your structured data so it ignores the entire block. This is the single most common schema error.

❌ Wrong
{
  "@type": "FAQPage",
  "mainEntity": [...]
}
✅ Correct
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [...]
}
🔧
Fix: Always include "@context": "https://schema.org" as the very first field in every JSON-LD block. Every schema generator on Schemify includes this automatically.
2
Missing @type
Very common · Affects all schema types
Critical

The @type field identifies what kind of entity your schema describes. Without it, Google cannot determine what type of rich result to display and will skip your schema entirely.

❌ Wrong
{
  "@context": "https://schema.org",
  "name": "Sony Headphones",
  "offers": {…}
}
✅ Correct
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Sony Headphones",
  "offers": {…}
}
🔧
Fix: Always include "@type" as the second field, immediately after @context. Use an exact Schema.org type name; it is case-sensitive (Product, not product; FAQPage, not faqpage).
3
Invalid JSON Syntax
Missing commas, brackets, or quotes
Critical

A single missing comma, unclosed bracket, or unquoted key makes the entire JSON block invalid. Google cannot parse invalid JSON no matter how correct the schema logic is. This is especially common when manually editing schema code.

❌ Wrong (missing comma)
{
  "@context": "https://schema.org"
  "@type": "Product",
  "name": "Headphones"
}
✅ Correct
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Headphones"
}
🔧
Fix: Never edit JSON-LD manually always use a generator. If you must edit, paste your code into the Schemify Validator, which instantly identifies syntax errors. Every field except the last in an object must end with a comma.
4
Schema Doesn't Match Page Content
Policy violation · Can cause manual penalty
Critical

Google cross-checks your schema against what's actually visible on your page. If you add FAQ schema with questions that aren't on the page, fake review ratings, or product prices that differ from what's shown, Google may issue a manual action against your site. This is the most serious schema mistake you can make.

🔧
Fix: Only use schema to mark up content that is genuinely visible to users on that page. If your FAQ section has 3 questions, your FAQPage schema should have exactly those 3 questions. If your product costs ₹2,499, your Product schema must show ₹2,499. Schema must always reflect reality.
5
Missing Required Fields
Different for each schema type
High

Every schema type has required fields. Missing even one required field prevents Google from generating a rich result. The required fields differ by type, which catches many people out when they copy the schema from examples that are missing fields.

Schema TypeRequired Fields
FAQPage@context, @type, mainEntity (with Question + Answer)
Product@context, @type, name + offers or aggregateRating
Recipe@context, @type, name, image, author, recipeIngredient, recipeInstructions
Event@context, @type, name, startDate, location
JobPosting@context, @type, title, hiringOrganization, jobLocation, datePosted
VideoObject@context, @type, name, description, thumbnailUrl, uploadDate
🔧
Fix: Use the Schemify Validator to check which required fields are present and which are missing for your specific schema type. Or use any Schemify generator; all required fields are included by default.
6
Wrong Date Format
Must be ISO 8601, not plain text
Medium

Dates in schema markup must follow the ISO 8601 format. Plain text dates like "May 18, 2026" or "18/05/2026" are invalid and will cause validation errors. This affects datePublished, dateModified, startDate, endDate, datePosted, and priceValidUntil fields.

❌ Wrong
"datePublished": "May 18, 2026",
"dateModified": "18/05/2026"
✅ Correct
"datePublished": "2026-05-18",
"dateModified": "2026-05-18"
🔧
Fix: Always use YYYY-MM-DD format for dates. For date-times, use: 2026-05-18T09:00:00+05:30. For durations (Recipe, HowTo, Video): use ISO 8601 duration format like PT30M for 30 minutes.
7
Broken or Inaccessible Image URLs
Google can't fetch the thumbnail
Medium

Google fetches the image URLs in your schema to display as thumbnails in rich results. If the URL is broken, returns a 404, requires login to access, or redirects to another URL, Google cannot display the image, and the rich result may be suppressed or shown without a thumbnail.

🔧
Fix: Always test your image URLs by pasting them directly into a browser tab. Make sure they load without redirects, don't require authentication, and are publicly accessible. For best results, use images at least 1200×630px for Article schema and at least 600×600px for Product schema.
8
Using the Wrong Schema Type
E.g. Article instead of BlogPosting
Medium

Using a generic schema type when a more specific one exists means you miss out on richer, more targeted rich result features. For example, using HowTo schema for a recipe instead of Recipe schema means you don't get the recipe carousel, ratings, or calorie display.

Your Content❌ Common Wrong Type✅ Correct Type
Food recipeHowToRecipe
Blog postArticleBlogPosting
News articleArticleNewsArticle
Online courseProductCourse
App or softwareProductSoftwareApplication
Job listingArticleJobPosting
🔧
Fix: Always use the most specific schema type that accurately describes your content. Browse all Schemify generators to find the right type for your content.
9
Outdated or Expired Values
priceValidUntil, event dates, job postings
Medium

Schema with expired dates signals stale content to Google and can suppress rich results. This is especially common with priceValidUntil on Product schema, past dates on Event schema, and expired validThrough on JobPosting schema.

❌ Expired
"priceValidUntil": "2025-12-31",
// This date is in the past!
✅ Current
"priceValidUntil": "2026-12-31",
// Always set a future date
🔧
Fix: Set calendar reminders to update date-dependent schema fields regularly. For priceValidUntil, always set it 6–12 months ahead. For events, update or remove schema as soon as the event ends. Expired job postings should be removed from both the page and the schema.
10
Placing Schema in the Body Instead of Head
Technically allowed but not best practice
Low

Google officially supports JSON-LD anywhere in the HTML document in the head or the body. However, placing it in the <head> is strongly recommended as best practice because it ensures Google encounters your schema before parsing the body content and reduces any risk of parsing interference.

⚠️ Not Recommended
<body>
  <!-- page content -->
  <script type="application/ld+json">
  { ... }
  </script>
</body>
✅ Recommended
<head>
  <!-- meta tags etc -->
  <script type="application/ld+json">
  { ... }
  </script>
</head>
🔧
Fix: Move your JSON-LD blocks to the <head> section of your HTML. The only exception is WordPress's Custom HTML block, which adds schema to the body, but Google handles this correctly for WordPress sites.

Validate your schema now

The Schemify Validator checks for all 10 mistakes instantly

Check My Schema →

Frequently Asked Questions

The most common mistake is missing the @context field or using an incorrect value. Every JSON-LD block must include "@context": "https://schema.org" or Google cannot parse the schema at all. The second most common is missing required fields for the specific schema type being used.
Use the Schemify Schema Validator to check your JSON-LD code instantly; it catches syntax errors, and missing required fields and identifies your schema type. Then confirm with Google's Rich Results Test using your live page URL. Google Search Console also shows schema errors under the Enhancements section.
Misleading or manipulative schemas, like fake ratings or prices that don't match your page, can result in a manual action from Google, which hurts rankings. Invalid JSON or missing fields simply means Google ignores the schema; it does not actively penalise your site. The most dangerous mistakes are those that violate Google's spam policies, not technical errors.
Valid schema does not guarantee rich results. Google also considers content quality, page authority, user engagement signals, and whether the schema accurately reflects the visible page content. Rich results typically appear 1–4 weeks after Google recrawls your page. You can speed this up by submitting your URL in Google Search Console.
Check your schema in Google Search Console monthly; it will alert you to any new errors. Additionally, re-validate the schema whenever you update a page's content, change prices or dates, or update your website theme. For e-commerce sites with frequently changing prices, check weekly.