SEOApril 2026 · 14 min read

How to Write JSON-LD Schema Markup in 2026

Structured data used to be a side quest — a nice-to-have that might earn you a star rating in search. In 2026, it is closer to a requirement. Search results are converging on rich cards, AI Overviews, and answer boxes that all pull from the same source: the JSON-LD in your page head. At the same time, Google has quietly deprecated two of the most-used schema types (HowTo entirely, FAQPage for almost everyone) and most of the old guides have not caught up. This is the working guide for 2026: what to write, what to skip, and how to validate it.

Try the Schema Markup Generator
13 types, live validation, SERP preview, direct links to Rich Results Test and Schema.org Validator
DG
Derek Giordano
Designer & Developer
⚡ Key Takeaways
  • Write JSON-LD structured data the right way in 2026.
  • Why JSON-LD Won (and Microdata Lost).
  • Covers anatomy of a json-ld block.
  • The 13 Types That Still Matter in 2026.
  • The Deprecations Nobody Warned You About.

Why JSON-LD Won (and Microdata Lost)

Schema.org has three serialization formats: Microdata, RDFa, and JSON-LD. All three are valid. Google recommends JSON-LD, and has for years, and the reason is architectural. Microdata and RDFa force you to interleave markup with your visible content — itemscope and itemprop attributes scattered through your HTML, coupled to whatever markup the content editor is writing. Change the HTML, and you can silently break the structured data. Swap your CMS template, and you start over.

JSON-LD lives in a

Two details worth noticing. First, nested types get their own @typeauthor is a Person, publisher is an Organization, and Organization's logo is itself an ImageObject. Schema.org is strongly typed all the way down. Second, image is an array even though there is only one image. Google accepts either a string or an array, but an array is the forgiving choice — you can add more later without restructuring. Other array-shaped properties follow the same pattern: author can be one Person or many, review can be one or many.

The 13 Types That Still Matter in 2026

Schema.org defines over 800 types. Google only renders rich results for about 30 of them, and the practically useful list is shorter still. These are the thirteen that cover almost every real-world SEO use case in 2026:

⚠ Warning
On iOS Safari, backdrop-filter inside a position: fixed element can cause severe scroll performance issues. Test thoroughly on real iOS devices.

Rich-result types (Google renders these): Article (news, blog posts, long-form), Product (ecommerce listings with price, availability, rating), Recipe (cooking content with ingredients, steps, yield), Event (concerts, conferences, classes, with dates and tickets), LocalBusiness (brick-and-mortar with address, hours, phone), BreadcrumbList (shown above the title in SERPs), VideoObject (video thumbnails and durations), Review (standalone review pages with rating), and Course (online and in-person educational offerings).

Graph types (no rich result, but important context): Organization (your company — logo, social profiles, contact), Person (authors, founders, public figures — feeds Google's Knowledge Graph). These do not trigger rich results on their own, but they ground the other types. An Article with author.@type: Person and publisher.@type: Organization is doing double duty — the Article earns the rich result, and the nested entities feed your author and brand signals across Google's systems.

Limited and deprecated: FAQPage and HowTo. Keep reading.

The Deprecations Nobody Warned You About

This is the section that most 2023-era guides get wrong. Google made two big rich-result cuts, and if you are still following old advice, you are shipping markup that does nothing.

HowTo is fully deprecated. In September 2023, Google removed HowTo rich results from desktop (they had already been restricted on mobile a month earlier). The search appearance, the rich result report, and the Rich Results Test support were all dropped within 180 days. The markup is still valid schema.org — nothing breaks — but it no longer produces a visible rich result in Google Search. If a client or CMS tells you to add HowTo markup for step-by-step pages, the honest answer is: you can, but the visible payoff is zero on Google. Bing still renders some HowTo results, and AI engines read the structure, so there is minor residual value. Do not prioritize it.

FAQPage is restricted to authoritative sites. In August 2023, Google announced that FAQ rich results would only appear for “well-known, authoritative government and health websites.” For every other site, the rich result no longer appears. The markup is still valid and still parsed, and there are three reasons to keep using it: AI engines like ChatGPT, Perplexity, and Google's own AI Overviews lift structured question-answer pairs directly; Bing still renders FAQ results more permissively than Google; and internal analytics tools like Search Console still track FAQ markup impressions even when the SERP treatment is absent. Treat it as a signal for machines, not a visible SERP enhancement.

Two smaller deprecations worth knowing about: SpecialAnnouncement (introduced during COVID, quietly wound down post-pandemic) and learning-video-specific VideoObject enhancements (folded back into the standard video snippet treatment in 2025). Straight VideoObject still works; the expanded learning-video panel does not.

Every rich-result type has two tiers in Google's developer docs. Required properties are the ones Google needs to render the rich result at all — omit any of them and the result is ineligible. Recommended properties improve quality scoring and the likelihood Google picks your result over a competitor's when both pages are eligible. The distinction matters because filling out every optional field on an FAQPage buys you nothing if you left headline empty on your Article.

Here is the rough shape for the high-traffic types, as of 2026:

Article         required: headline, image, datePublished, author
                recommended: dateModified, publisher, description, mainEntityOfPage

Product         required: name, image, offers{price, priceCurrency, availability}
                recommended: brand, sku, gtin, aggregateRating, review

Recipe          required: name, image, author, datePublished, description,
                          prepTime, cookTime, recipeYield, recipeIngredient,
                          recipeInstructions
                recommended: aggregateRating, nutrition, recipeCategory

Event           required: name, startDate, location
                recommended: endDate, description, offers, image,
                             eventStatus, eventAttendanceMode

LocalBusiness   required: name, image, address (full PostalAddress)
                recommended: telephone, priceRange, openingHours,
                             aggregateRating, geo

VideoObject     required: name, description, thumbnailUrl, uploadDate
                recommended: duration, contentUrl, embedUrl

Two patterns worth internalizing. First, dates are always ISO 8601. That means 2026-04-18 for a date, 2026-04-18T14:00:00-05:00 for a datetime with timezone. Drifting to US-style 04/18/2026 silently breaks validation. Second, durations also use ISO 8601: PT30M is 30 minutes, PT1H30M is 1 hour 30 minutes, PT2M15S is 2 minutes 15 seconds. This one trips up Recipe and VideoObject the most.

The Content-Match Rule That Gets Sites Penalized

This is the rule no validator can enforce, and it is the one that triggers manual actions. Google's structured data guidelines require that your JSON-LD describe content that is actually visible on the page. If your Product markup declares a price of $49.99 but the visible page shows $59.99, your markup is syntactically valid — both Rich Results Test and the schema.org validator will pass it — but you are in violation. Google's reviewers can flag pages for this, and when they do the entire site can lose rich-result eligibility for months.

The most common ways to trip this rule in production: CMS-driven prices and inventory that update asynchronously from the JSON-LD (price changes at noon, schema regenerates at midnight); datePublished fixed to a historical date while the visible byline says “Updated today”; AggregateRating values imported from a reviews widget that does not actually render on the page; FAQ questions in the markup that never appear as visible accordions. The fix is always the same: drive the structured data from the same source that renders the visible HTML. If they share a data source, they stay in sync automatically. If they do not, they will drift — usually right before a manual review.

Shipping Multiple Blocks on One Page

A page can have as many JSON-LD blocks as it needs. The canonical trio for any article is Article + BreadcrumbList + Organization — three separate

The graph pattern is slightly tidier for pages with lots of related entities — an ecommerce product page with Organization, WebSite, WebPage, Product, BreadcrumbList, Offer, and AggregateRating all referencing each other is genuinely cleaner in graph form. For most pages, separate blocks are simpler and just as valid. Pick one style and stay consistent.

Validation: Rich Results Test vs Schema.org

You need both, because they check different things. The Google Rich Results Test validates your markup against the subset of schema types Google actually renders as rich results — the roughly 30 types in the Search Gallery. A clean pass here means “if your page ranks, Google is willing to show a rich result for it.” It is tight, opinionated, and only knows about types Google cares about.

The schema.org Markup Validator validates against the full schema.org vocabulary — all 800+ types. It will pass markup for types Google does not render (nothing wrong with that — other search engines, AI crawlers, and the semantic web still read it), and it is stricter about schema.org correctness regardless of Google. Use it during implementation to catch structural mistakes; use Rich Results Test to confirm Google will display the result.

Neither tool checks content match. Neither tool tells you whether your markup will actually earn a rich result in production — Google decides that at query time, based on page authority, query relevance, and competition. Eligibility is necessary, not sufficient.

JSON-LD for AI Visibility

The biggest shift in 2025-2026 is not in rich results but in how AI engines consume structured data. ChatGPT, Claude, Perplexity, and Google's own AI Overviews all lean heavily on JSON-LD when they cite web content. The markup does three things for AI visibility:

First, it makes entities unambiguous. “Derek Giordano at Ultimate Design Tools” is one of several possible people until you back it with a Person block linking a known URL, a known employer (Organization), and sameAs references to social profiles. AI engines use that graph to resolve “who is the author of this article” across pages that might spell your name differently.

Second, it labels structure. An FAQPage tells a reader that the questions-and-answers are factual pairs the author takes responsibility for. An Article with a clear datePublished tells an AI how fresh the content is. A Product with a concrete price tells it what to quote when answering “how much does X cost.” None of this is magic — it is just giving machine readers the same cues a human reader gets from the visible layout.

Third, it survives summarization. When an AI engine compresses your 3,000-word article into a 40-word answer, the JSON-LD block travels as its own payload. Key facts like author, publication date, publisher, and main topic stay tied to your site even when the prose gets paraphrased beyond recognition. This is the strongest reason to keep shipping FAQPage and HowTo markup even though Google no longer renders them as rich results — the AI engines do not care about Google's rich-result deprecations, and the structured signal still moves the needle.

A Ship-It Checklist

Before the block goes to production:

✓ Every required field is present and non-empty. Empty strings still fail validation. If you cannot supply a required field honestly, the page is not eligible for that rich result, and shipping the markup anyway just invites errors in Search Console.

✓ Every value in the JSON-LD matches what is visible on the page. Price, availability, date, author, rating, review count, FAQ questions — all of it. If the CMS renders $49.99, the JSON-LD says $49.99.

✓ Dates are ISO 8601. No US-style slashes, no European day-first. Datetime fields include a timezone offset.

✓ The page URL in mainEntityOfPage (for Articles) or url properties (elsewhere) is the canonical URL, not a staging or UTM-tagged variant.

✓ Run the Rich Results Test on the URL after deploy. Zero errors, zero warnings, expected rich-result types listed.

✓ Run the schema.org validator too — it catches structural mistakes the Rich Results Test ignores.

✓ For HowTo and FAQPage markup, accept up front that the rich result is unlikely or impossible, and keep shipping the markup for AI visibility and as defensive signal for future Google policy shifts.

If that sounds like a lot of manual work, it is — which is exactly why a generator matters. Point-and-click a type, fill the form, copy the output, open the Rich Results Test, paste, validate, ship. The Schema Markup Generator in the related tool card below handles all thirteen types with required-vs-recommended fields surfaced separately and direct links to both the Rich Results Test and the Schema.org Validator.

Build valid JSON-LD in under a minute

13 schema.org types, live validation, SERP preview, and direct links to Google's Rich Results Test and the Schema.org Validator. Eligibility badges that reflect Google's 2026 deprecations.

⚡ Open Schema Markup Generator
DG
Derek Giordano
Written by the creator of Ultimate Design Tools. BA in Business Marketing.
📚 References & Further Reading