WebDevCalc

Structured Data with JSON-LD: A Practical Guide for 2026

Structured data is extra markup you add to a page to describe what it means in a way search engines can read precisely. Instead of letting Google guess that a block of text is a recipe, an event, or a product, you tell it directly. The payoff is rich results: the star ratings, FAQ dropdowns, event dates, and other enhanced listings that make your link stand out in search.

This guide focuses on JSON-LD, which is Google's recommended format, and shows how to add it without touching your visible HTML. It complements the SEO Audit Checklist → and the Meta Tag Generator →, which handle the rest of your on page signals.

Why JSON-LD over the alternatives

There are three ways to write structured data: Microdata and RDFa, which interleave attributes into your HTML elements, and JSON-LD, which is a single self contained script. Google recommends JSON-LD for a simple reason: it keeps the structured data separate from your markup. You drop one script block in and your HTML stays clean, which makes it far easier to add, edit, and debug.

Where it goes

Place your JSON-LD inside a script tag in the head of the document. It can technically live in the body, but the head is the conventional, reliable home for it.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Structured Data with JSON-LD",
  "datePublished": "2026-06-12",
  "author": { "@type": "Organization", "name": "WebDevCalc" }
}
</script>

Two keys are always present. @context points at schema.org, the shared vocabulary every search engine understands. @type declares what kind of thing this is, which determines every other property that applies.

Common schema types

Schema.org defines hundreds of types, but a short list covers most real sites.

TypeUse it for
ArticleBlog posts, guides, news
OrganizationYour company identity and logo
ProductItems for sale, with price and rating
FAQPageQuestion and answer sections
EventConcerts, webinars, anything scheduled
BreadcrumbListNavigation path in search results

FAQ is the easiest rich result to earn

If your page genuinely answers common questions, an FAQPage block can earn an expandable listing in search.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Where does JSON-LD go?",
    "acceptedAnswer": { "@type": "Answer", "text": "In the head of the page." }
  }]
}
</script>

Tip: Only mark up content that is actually visible on the page. Adding structured data for a rating, a price, or an FAQ answer that a visitor cannot see is a guidelines violation and a fast way to earn a manual penalty. The markup must always match the real, visible content.

The rules that keep you safe

Match visible content. This is the cardinal rule. Your structured data must describe what is on the page, not an idealized version of it.

Fill required properties. Each type has properties Google needs before it will show a rich result. A Product without a price, or a Recipe without ingredients, will not qualify.

Do not mark up multiple things as one. If a page lists ten products, each gets its own description, not one block pretending the page is a single product.

Keep it accurate as content changes. Stale structured data, like an event date that has passed or a price that no longer holds, undermines trust and can be penalized.

Test everything

Never ship structured data you have not validated. A schema validator or Google's rich results test will parse your JSON-LD, flag syntax errors, and tell you whether the page is eligible for a rich result. A single misplaced comma silently disables the whole block, so this check is not optional. Validate, fix, and only then deploy.

Connecting related entities

Real pages often describe more than one thing at once: an article written by an organization that publishes on a known website. Schema.org lets you nest these so the relationships are explicit. The author and publisher properties each take their own typed object, and an Article can point back to its page through mainEntityOfPage. You do not have to flatten everything into one type. Nesting typed objects is how you tell search engines that these entities belong together, which produces a richer, more trustworthy picture of your content.

A realistic starting point

You do not need to mark up everything at once. Start with an Organization block on your home page so Google understands your brand and logo. Add Article to your posts and guides. If you sell things, add Product with real prices and ratings. Layer in FAQPage where you genuinely answer questions. Each addition is independent, so you can grow your structured data one type at a time.

Related reading

Structured data sits alongside the rest of your on page signals, so see the meta tags guide and the SEO audit checklist.

Bottom line

JSON-LD is the cleanest way to tell search engines what your page means. Put a single script in the head, declare the right @type, fill its required properties, and above all only describe content that is actually visible. Validate before you ship. Pair it with the Meta Tag Generator → and the SEO Audit Checklist → for a page that search engines fully understand.

AboutContactPrivacy Policy