Schema markup is structured data code that helps search engines understand your content and display rich results. Using JSON-LD format, you can mark up articles, products, FAQs, local businesses, and more. Schema markup improves click-through rates through enhanced SERP features.

Schema markup is structured data code that helps search engines understand your content and display rich results. Using JSON-LD format, you can mark up articles, products, FAQs, local businesses, and more. Schema markup improves click-through rates through enhanced SERP features.

What is Schema Markup?

Schema markup is a semantic vocabulary of tags that you add to your HTML to improve how search engines read and represent your page in search results. It was created through collaboration between Google, Microsoft, Yahoo, and Yandex as Schema.org.

Schema markup benefits:

BenefitDescription
Rich resultsEnhanced SERP appearance with stars, images, prices
Better understandingSearch engines comprehend content meaning
Knowledge GraphPotential inclusion in Google’s Knowledge Graph
Voice searchStructured data helps voice assistants
Higher CTRRich results attract more clicks

Schema Markup Formats

JSON-LD (JavaScript Object Notation for Linked Data) is Google’s recommended format. It’s added as a script in the page head, separate from HTML content.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Schema Markup Guide",
  "author": {
    "@type": "Person",
    "name": "Nurul Aisyah"
  }
}
</script>

JSON-LD advantages:

  • Separate from HTML content
  • Easier to generate dynamically
  • Simpler to maintain
  • Less error-prone

Microdata

Microdata embeds structured data within HTML using attributes.

<article itemscope itemtype="https://schema.org/Article">
  <h1 itemprop="headline">Schema Markup Guide</h1>
  <span itemprop="author" itemscope itemtype="https://schema.org/Person">
    <span itemprop="name">Nurul Aisyah</span>
  </span>
</article>

RDFa

RDFa uses HTML attributes similar to Microdata.

<article vocab="https://schema.org/" typeof="Article">
  <h1 property="headline">Schema Markup Guide</h1>
  <span property="author" typeof="Person">
    <span property="name">Nurul Aisyah</span>
  </span>
</article>

Common Schema Types

Article Schema

For blog posts, news articles, and content pages.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Schema Markup: Complete Guide",
  "description": "Learn how to implement schema markup for SEO",
  "image": "https://example.com/image.jpg",
  "author": {
    "@type": "Person",
    "name": "Nurul Aisyah",
    "url": "https://semantic.my/author/nurul-aisyah/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Semantic.my",
    "logo": {
      "@type": "ImageObject",
      "url": "https://semantic.my/logo.png"
    }
  },
  "datePublished": "2024-03-20",
  "dateModified": "2026-01-20"
}

Organization Schema

For company and brand information.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Semantic.my",
  "url": "https://semantic.my",
  "logo": "https://semantic.my/logo.png",
  "description": "SEO agency in Malaysia",
  "sameAs": [
    "https://linkedin.com/company/semantic-my",
    "https://twitter.com/semanticmy"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+60-17-202-0030",
    "contactType": "customer service"
  }
}

LocalBusiness Schema

For businesses with physical locations.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Semantic.my",
  "image": "https://semantic.my/office.jpg",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Level 10, Menara XYZ",
    "addressLocality": "Kuala Lumpur",
    "postalCode": "50450",
    "addressCountry": "MY"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 3.1412,
    "longitude": 101.6865
  },
  "openingHoursSpecification": {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
    "opens": "09:00",
    "closes": "18:00"
  },
  "priceRange": "RM1,500 - RM15,000"
}

FAQ Schema

For frequently asked questions sections.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is schema markup?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Schema markup is structured data that helps search engines understand content."
      }
    },
    {
      "@type": "Question",
      "name": "Does schema help SEO?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Schema enables rich results which improve click-through rates."
      }
    }
  ]
}

Product Schema

For e-commerce product pages.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "SEO Audit Service",
  "description": "Comprehensive technical SEO audit",
  "offers": {
    "@type": "Offer",
    "price": "3000",
    "priceCurrency": "MYR",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "24"
  }
}

For navigation breadcrumbs.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://semantic.my"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "SEO",
      "item": "https://semantic.my/seo/"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Technical SEO",
      "item": "https://semantic.my/seo/technical-seo/"
    }
  ]
}

Connected Schema with @graph

Use @graph to connect multiple schema entities on a single page, creating a more complete picture for search engines.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://semantic.my/#organization",
      "name": "Semantic.my",
      "url": "https://semantic.my"
    },
    {
      "@type": "WebSite",
      "@id": "https://semantic.my/#website",
      "url": "https://semantic.my",
      "publisher": {"@id": "https://semantic.my/#organization"}
    },
    {
      "@type": "WebPage",
      "@id": "https://semantic.my/schema-markup/#webpage",
      "isPartOf": {"@id": "https://semantic.my/#website"},
      "author": {"@id": "https://semantic.my/author/nurul-aisyah/#person"}
    },
    {
      "@type": "Article",
      "mainEntityOfPage": {"@id": "https://semantic.my/schema-markup/#webpage"},
      "author": {"@id": "https://semantic.my/author/nurul-aisyah/#person"},
      "publisher": {"@id": "https://semantic.my/#organization"}
    },
    {
      "@type": "Person",
      "@id": "https://semantic.my/author/nurul-aisyah/#person",
      "name": "Nurul Aisyah"
    }
  ]
}

Rich Results Types

Schema markup can trigger various rich results in Google:

Rich ResultSchema RequiredAppearance
Review snippetReview, AggregateRatingStar ratings
FAQFAQPageExpandable Q&A
How-toHowToStep-by-step instructions
RecipeRecipeImage, rating, cook time
ProductProduct, OfferPrice, availability
EventEventDate, location, tickets
Job postingJobPostingSalary, location
BreadcrumbsBreadcrumbListNavigation path

Implementation Best Practices

Do’s

  • Use JSON-LD format
  • Include all required properties
  • Keep schema accurate to page content
  • Test with Rich Results Test
  • Use @id for entity connections
  • Update schema when content changes

Don’ts

  • Mark up content not visible on page
  • Use schema to deceive users
  • Include irrelevant schema types
  • Forget required properties
  • Use outdated schema versions

Testing and Validation

Google Rich Results Test

Tests if your page is eligible for rich results:

  • URL: search.google.com/test/rich-results
  • Shows which rich results are detected
  • Previews how results may appear

Schema Markup Validator

Validates syntax against Schema.org vocabulary:

  • URL: validator.schema.org
  • Checks all schema types
  • More comprehensive than Rich Results Test

Google Search Console

Monitor schema performance:

  • Enhancements report shows rich result status
  • Identifies errors and warnings
  • Tracks impressions and clicks

Schema Implementation Checklist

Site-Wide Schema

  • Organization schema on homepage
  • WebSite schema with search action
  • BreadcrumbList on all pages
  • Logo properly linked

Article Pages

  • Article or BlogPosting schema
  • Author linked to Person schema
  • Publisher linked to Organization
  • datePublished and dateModified

Product Pages

  • Product schema with offers
  • Price and availability
  • AggregateRating if reviews exist
  • Images included

Local Business

  • LocalBusiness with full address
  • GeoCoordinates for maps
  • OpeningHoursSpecification
  • Contact information

Common Schema Mistakes

  1. Missing required properties - Schema won’t validate
  2. Marking up hidden content - Against guidelines
  3. Incorrect schema type - Using Product for services
  4. Not connecting entities - Missing relationships
  5. Outdated information - Prices, hours not updated
  6. Duplicate schema - Same type multiple times incorrectly

Conclusion

Schema markup helps search engines understand your content and enables rich results that improve click-through rates. JSON-LD is the recommended format for its simplicity and maintainability.

Start with essential schema types: Organization, Article, and BreadcrumbList. Add FAQ schema where relevant. For local businesses, LocalBusiness schema is critical for local SEO.

Use connected schema with @graph to create relationships between entities. Test with Google’s Rich Results Test and monitor performance in Search Console. Properly implemented schema is a valuable part of technical SEO that enhances search visibility.

Frequently Asked Questions

Does schema markup directly improve rankings?
Schema markup is not a direct ranking factor. However, it enables rich results that improve click-through rates, which can indirectly benefit rankings. Schema also helps search engines better understand your content, potentially improving relevance matching.
Which schema format should I use?
Google recommends JSON-LD format for schema markup. It's easier to implement and maintain than Microdata or RDFa because it's separate from HTML. JSON-LD can be added to the page head without modifying content markup.
How do I test if my schema markup is working?
Use Google's Rich Results Test to validate schema and preview rich results. The Schema Markup Validator checks syntax against Schema.org vocabulary. Google Search Console shows which rich results are detected on your site.