Development Tips

Schema.org JSON-LD: A Practical Guide for 2026

By Ken Key Jul 20, 2026 5 min read Updated Oct 15, 2026

Schema.org JSON-LD: A Practical Guide for 2026
The short answer

JSON-LD is a script block that feeds Schema.org vocabulary to Google in one place instead of scattering microdata through your HTML. Google recommends it. Mark up LocalBusiness, Article, Product, FAQ, and Breadcrumb. Skip anything you cannot keep accurate, since wrong structured data hurts more than none.

Part of the complete SEO guide.

On this page

Most sites have some structured data, and most of it is either wrong or doing nothing. JSON-LD is the format Google actually recommends, and it’s the difference between showing up as a plain blue link and showing up with your hours, reviews, and FAQ answers attached. Here’s what’s worth marking up in 2026 and what you can safely ignore.

What JSON-LD actually is

Schema.org is a shared vocabulary. It’s a list of agreed-upon types (LocalBusiness, Article, Product) and properties (name, address, priceRange). JSON-LD is just the syntax for delivering that vocabulary to search engines. You drop a <script type="application/ld+json"> block in your HTML and Google reads it.

The reason everyone uses JSON-LD over microdata or RDFa is simple: it lives in one block instead of being tangled through your markup. You can generate it, cache it, and change it without touching your templates. If you’re hand-editing microdata attributes across fifty pages, you’re doing it the hard way.

<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@type": "LocalBusiness",
 "name": "Acme Hardware",
 "url": "https://acmehardware.com",
 "telephone": "+1-631-555-0142",
 "address": {
 "@type": "PostalAddress",
 "streetAddress": "42 Main St",
 "addressLocality": "Commack",
 "addressRegion": "NY",
 "postalCode": "11725",
 "addressCountry": "US"
 },
 "openingHoursSpecification": [{
 "@type": "OpeningHoursSpecification",
 "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
 "opens": "08:00",
 "closes": "18:00"
 }]
}
</script>

That’s the whole thing. No framework, no plugin, no build step required.

The types that still earn their keep in 2026

Google has been trimming rich result support for years. Some types that used to get you a fancy SERP treatment no longer do. Here’s the current state of play.

LocalBusiness (and its subtypes)

Still the highest-value markup for a brick-and-mortar or service-area business. Use the most specific subtype you can: Restaurant, Dentist, Plumber, AutoRepair. The generic LocalBusiness is a fallback, not a goal.

Two things people get wrong. First, they put the markup on every page with the same address, which is fine, but they forget to keep the NAP (name, address, phone) byte-for-byte identical to their Google Business Profile. Mismatched phone formats are a common source of confusion. Second, they list areaServed as a giant list of every town within fifty miles. Pick the ones you actually serve.

Article and BlogPosting

If you publish content, mark it up. headline, author, datePublished, dateModified, and image are the ones that matter. Google uses dateModified heavily for freshness signals, which means if you genuinely update a post, update that field too. Don’t fake it. Resetting the date on unchanged content is a good way to lose trust.

<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@type": "BlogPosting",
 "headline": "Schema.org JSON-LD: A Practical Guide",
 "datePublished": "2026-01-14",
 "dateModified": "2026-03-02",
 "author": {
 "@type": "Person",
 "name": "Jane Doe",
 "url": "https://example.com/about/"
 },
 "publisher": {
 "@type": "Organization",
 "name": "Example Co",
 "logo": {
 "@type": "ImageObject",
 "url": "https://example.com/logo.png"
 }
 },
 "mainEntityOfPage": "https://example.com/schema-guide/"
}
</script>

FAQPage

This is the one that changed the most. Google restricted FAQ rich results to authoritative government and health sites back in 2023, so most businesses will not see the expandable Q&A boxes anymore. That doesn’t make the markup useless. It still helps machines understand your page, and it’s cheap to add. Just don’t build a whole content strategy around a rich result that isn’t coming.

Underrated. It replaces the raw URL in the SERP with a readable path like Home > Services > Roofing. Small trust bump, trivial to implement, and it works well with sites that have deep category structures.

Product and Offer

If you sell anything, this drives price and availability into the listing. Keep price, priceCurrency, and availability in sync with your actual inventory. Stale prices in structured data are worse than no structured data.

What to skip

  • Organization on every page. One canonical place (usually the homepage or a dedicated about page) is enough. Duplicating it sitewide adds noise.
  • SiteNavigationElement. Google ignores it. Your <nav> and sitemap do the job.
  • Review markup you didn’t earn. Self-serving reviews on your own LocalBusiness are ignored at best and can trigger a manual action at worst.
  • HowTo. Rich results were deprecated. The markup itself isn’t harmful, but don’t expect anything from it.

How to implement it without a mess

If you’re on a CMS, you have two options: a plugin or a custom implementation. Plugins are fine for simple sites, but they tend to output a lot of fields you didn’t ask for and conflict with each other when you stack two of them. If your site is custom-built, generating the JSON-LD server-side is cleaner and faster. I usually build it into whatever custom web development I’m doing so the data pulls straight from the same database the page renders from. No duplication, no drift.

If you’re hand-writing it, a few rules that save headaches:

  • Use absolute URLs. /contact will validate but behave unpredictably. Use https://yoursite.com/contact.
  • Use ISO 8601 for dates and times: 2026-03-02, 08:00.
  • One @context per block. If you’re combining types, use an array in @type or @graph.
  • Escape your quotes. A stray unescaped apostrophe in a business name will break the whole block silently.

How to test it

Two tools, both free. The Schema Markup Validator checks syntax and vocabulary. Google’s Rich Results Test tells you whether Google will actually do anything with it. Run both. They catch different problems.

Then watch Search Console under the Enhancements reports. If you deploy markup and see errors climb over the next two weeks, something in your template is injecting malformed JSON. It happens more than you’d think, usually from a CMS field that contains a quote character nobody sanitized.

Does it actually move rankings?

Honest answer: not directly, and anyone who tells you otherwise is selling something. Structured data is not a ranking factor. What it does is improve how your listing appears, which affects click-through rate, which affects traffic. It also helps Google disambiguate what your page is about, which can help you get matched to the right queries.

On a local level that matters. If you’re competing with a dozen other contractors in the same county, having your hours, service area, and category clearly declared gives you a small edge over the guy whose site is a single page of unmarked text. I’ve seen it help local visibility enough to be worth the hour of setup, and I build it into most Long Island SEO work for exactly that reason.

FAQ

Do I need JSON-LD if I already have a Google Business Profile?

Yes, they do different jobs. Your GBP controls the map pack and knowledge panel. Your site’s JSON-LD tells Google what the page itself is. They should agree with each other, but one doesn’t replace the other.

Can bad structured data hurt my rankings?

Malformed markup just gets ignored, so no penalty there. The risk is markup that contradicts your visible content, like a fake review count or a price that doesn’t match the page. That can earn you a structured data manual action, which is a real problem to unwind.

How often should I update it?

Whenever the underlying facts change: hours, prices, address, staff, published dates. Otherwise leave it alone. There’s no benefit to churning the markup for its own sake.

Have a project like this?

I do custom web development for Long Island businesses. If you need this done right, let’s talk.