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. Rich results driven by schema improve click-through rates in the SERPs.

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": "Organization",
    "name": "Editorial Team"
  }
}
</script>

JSON-LD advantages:

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

WordPress plugins like Rank Math and Yoast SEO generate JSON-LD automatically, reducing the risk of syntax errors.

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/Organization">
    <span itemprop="name">Editorial Team</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="Organization">
    <span property="name">Editorial Team</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 for SEO",
  "description": "Learn how to implement schema markup for SEO",
  "image": "https://example.com/image.jpg",
  "author": {
    "@type": "Organization",
    "name": "Editorial Team",
    "url": "https://semantic.my/about/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Semantic.my",
    "logo": {
      "@type": "ImageObject",
      "url": "https://semantic.my/logo.png"
    }
  },
  "datePublished": "2024-03-20",
  "dateModified": "2026-03-12"
}

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. This is especially relevant for Malaysian businesses targeting local search.

{
  "@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. Shopify generates basic Product schema automatically; plugins like JSON-LD for SEO add review and offer details.

{
  "@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/#organization"}
    },
    {
      "@type": "Article",
      "mainEntityOfPage": {"@id": "https://semantic.my/schema-markup/#webpage"},
      "author": {"@id": "https://semantic.my/#organization"},
      "publisher": {"@id": "https://semantic.my/#organization"}
    }
  ]
}

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 for rich result types

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 Organization or 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 via @id
  5. Outdated information - Prices, hours not updated
  6. Duplicate schema - Same type multiple times incorrectly

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 Organization, Article, and BreadcrumbList schema. Add FAQ schema where relevant. For Malaysian local businesses, LocalBusiness schema with accurate address and geo-coordinates feeds directly into Google Maps and local pack results.

Use connected schema with @graph to build entity relationships. Validate with the Rich Results Test, then monitor performance in Search Console’s Enhancements reports. Well-implemented structured data is a practical part of technical SEO that enhances search visibility and can help you win featured snippets through rich results.

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.
Can I add schema markup without coding on WordPress?
Yes. Plugins like Rank Math and Yoast SEO generate Article, FAQ, and BreadcrumbList schema automatically. Schema Pro offers more granular control. For custom types, paste JSON-LD into the page head using a custom HTML block or a lightweight plugin like Insert Headers and Footers.