What Is Structured Data? A Developer's Field Guide
View source on any major recipe site and near the top of <head> you'll find a <script type="application/ld+json"> block, often longer than the visible article. That block is invisible to users, but it's why the site's Google listing shows star ratings, cook time, and calorie counts while yours shows two lines of grey text. If you've wondered what is structured data and whether it's worth the engineering time — that script block is it, and usually yes.
What Is Structured Data, in Plain Terms?
Structured data is content annotated in a standardized, machine-readable format so software can extract facts without parsing prose. Your product page says "Only $49, back in stock!" — a human gets it, but a crawler extracting price and availability from free text is doing error-prone guesswork. Structured data removes the guesswork:
{"@context": "https://schema.org", "@type": "Product", "name": "Ergo Keyboard", "offers": {"@type": "Offer", "price": "49.00", "priceCurrency": "USD", "availability": "https://schema.org/InStock"}}
The vocabulary — the agreed set of types like Product, Article, FAQPage and their properties — comes from schema.org, a project the major search engines launched jointly in 2011. Vocabulary and format are separate concerns: schema markup is the vocabulary; structured data formats are how you embed it in a page.
The Three Formats (and the One You Should Use)
JSON-LD
A self-contained script block, separate from your visible HTML. Google explicitly recommends it. Because it doesn't touch your markup, you can generate it from the same data source as the page — one template function, no risk of a CSS refactor silently breaking your annotations. It's also the only format you can inject via a tag manager when you can't touch the codebase, though server-rendered is safer.
Microdata
Attributes woven into the HTML itself: <span itemprop="price">49.00</span>. It guarantees the annotation matches visible content, but it entangles semantics with presentation — every markup change risks breaking it. You'll see it in older codebases and some e-commerce themes.
RDFa
The W3C's attribute-based format, similar to microdata. Facebook's Open Graph tags use RDFa syntax. For search purposes, it's effectively legacy.
What Google Actually Does With It
Structured data feeds rich results — the enhanced listings with ratings, prices, FAQ dropdowns, event dates, and job postings. A normal listing becomes a rich snippet only when three conditions line up: the page carries valid markup of a type Google supports, the content meets that feature's policies, and Google decides the enhancement is useful for the query. That third condition is the one that catches people — valid markup is eligibility, not entitlement. Google can and does show plain listings for perfectly marked-up pages.
Two clarifications worth being precise about. First, structured data is not a direct ranking factor; it changes how your result looks, and any traffic gain comes through click-through rate. Second, since AI Overviews arrived in search results, structured data has picked up a second job: it helps systems that summarize the web attribute facts — prices, ratings, authorship — to the right source. That's a reason the investment keeps aging well.
Implementation Details That Bite
- Markup must match visible content. Marking up five-star ratings that appear nowhere on the page violates Google's policies and can earn a manual action for spammy structured data. The markup describes the page; it doesn't decorate it.
- Required vs recommended properties. Each rich result type has required fields (miss one and you're ineligible) and recommended ones (more is better).
Productwithoutoffers,review, oraggregateRatinggets you nothing, for example. - One page, multiple types is fine — an article can carry
Article,BreadcrumbList, andOrganization— but conflicting duplicates (twoProductblocks with different prices, one from your theme and one from a plugin) are a classic source of weirdness. Audit for collisions after installing anything that "adds SEO". - Client-side injection is fragile. Google usually renders JavaScript, but rendering can lag crawling by hours or days, and other consumers of structured data don't render JS at all. Server-render the block when you can.
- Escape properly. A stray unescaped quote in a product name produces invalid JSON, and invalid JSON means the whole block is silently ignored. Serialize with a real JSON encoder, never string concatenation.
The Validation Workflow
- While developing: paste the page or code into the Schema.org validator for syntax, then Google's Rich Results Test for feature eligibility. The distinction matters — markup can be valid schema.org yet ineligible for any Google feature.
- After deploy: use URL Inspection in Search Console to see the markup Google actually extracted from the rendered page, which catches JS-injection and templating bugs the local tests can't.
- Ongoing: Search Console's Enhancements reports list errors per rich-result type across the site, but they only update as pages get recrawled. For faster feedback across every template, a full-site crawl flags pages whose structured data went missing or broke after a release — template regressions are far more common than hand-authoring mistakes, in my experience.
Where to Start If You Have Nothing
Pick the one or two types that match your actual business: Product plus BreadcrumbList for e-commerce, Article plus Organization for publishers, LocalBusiness for anything with a storefront. Generate the JSON-LD in your page template from real fields — price from the price column, dates from the CMS — validate, ship, and check Search Console a week later. Hand-written static markup rots; generated markup stays honest.
Frequently Asked Questions
Does structured data improve rankings directly?
No — Google has been consistent that structured data isn't a ranking factor. Its value is eligibility for rich results, which occupy more SERP space and typically lift click-through rate. The traffic gain is real but it comes through presentation, not position.
Which structured data format does Google recommend?
JSON-LD. It lives in a self-contained script block separate from your visible HTML, so it's easier to generate from templates and doesn't break when the page markup changes. Microdata and RDFa are still parsed but are legacy choices for new work.
Why doesn't my rich result show even though the markup validates?
Valid markup makes a page eligible, not guaranteed. Google also checks content policies and decides per query whether the enhancement helps. Missing recommended properties, thin content, or simply Google's discretion can all keep a valid page on a plain listing.
Can I add structured data with Google Tag Manager?
Yes, JSON-LD can be injected via GTM and Google can process it after rendering. But rendering can be delayed relative to crawling, and non-Google consumers may never execute the JavaScript, so server-side generation in the page template is the more reliable option.
Try WebsiteChecker.Tech Free
Run a free technical SEO audit on any website. Get a client-ready report in minutes.
Start Free Scan