JSON-LD is structured data written as a <script type="application/ld+json"> block that uses the schema.org vocabulary to describe what a page is: an article and its author, an organization, a set of questions and answers, or a sequence of steps. Below are copy-ready examples for the five types most sites need, followed by what Google still does with each one in 2026. The short version: Article, Organization and BreadcrumbList are still worth adding for Google; FAQPage and HowTo no longer produce Google rich results but remain valid and harmless.
What Google does with each type in 2026
| Type | What Google shows today | Worth adding? |
|---|---|---|
| Article / BlogPosting | Uses it to understand the headline, images, dates and author of the page. | Yes, on articles and posts. |
| Organization | Uses it for details about your organization, such as its logo and official profiles. | Yes, on the home or about page. |
| BreadcrumbList | Shows breadcrumbs in desktop results. Since January 2025, mobile results show only the domain. | Yes, on pages with a breadcrumb trail. |
| FAQPage | No rich results since 7 May 2026. | Optional. Valid, harmless, no Google display. |
| HowTo | No rich results since September 2023. | Optional. Valid, harmless, no Google display. |
Google has said that structured data it does not use causes no problems, so there is no need to remove existing FAQPage or HowTo markup. Other search engines and tools that read schema.org can still parse it.
Article (or BlogPosting)
Use BlogPosting for blog posts, NewsArticle for news and Article for everything else. Google has no strictly required Article properties, but it recommends a headline, images, publication and modification dates, and an author with a name and URL.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to plan a support chatbot",
"description": "A step-by-step guide to scoping a customer support chatbot.",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://www.example.com/blog/plan-a-support-chatbot/"
},
"image": [
"https://www.example.com/images/chatbot-16x9.jpg",
"https://www.example.com/images/chatbot-4x3.jpg",
"https://www.example.com/images/chatbot-1x1.jpg"
],
"datePublished": "2026-09-01",
"dateModified": "2026-09-20",
"author": {
"@type": "Person",
"name": "Jane Doe",
"url": "https://www.example.com/team/jane-doe/"
},
"publisher": {
"@type": "Organization",
"name": "Example Inc.",
"logo": {
"@type": "ImageObject",
"url": "https://www.example.com/logo.png"
}
}
}
</script>
Google recommends several image aspect ratios (16x9, 4x3 and 1x1) at high resolution. Dates use the ISO 8601 format; add a time and time zone if you have them.
Organization
Put Organization markup on your home page or about page. The sameAs list links your official profiles, which helps connect your site to the same organization elsewhere on the web.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Inc.",
"url": "https://www.example.com/",
"logo": "https://www.example.com/logo.png",
"description": "Example Inc. builds scheduling software for clinics.",
"email": "hello@example.com",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://github.com/example"
],
"address": {
"@type": "PostalAddress",
"addressLocality": "Austin",
"addressRegion": "TX",
"addressCountry": "US"
},
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "support@example.com"
}
}
</script>
BreadcrumbList
List the trail from the top level down to the current page. Every level except the last needs a URL.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://www.example.com/blog/"
},
{
"@type": "ListItem",
"position": 3,
"name": "How to plan a support chatbot"
}
]
}
</script>
FAQPage
Google stopped showing FAQ rich results on 7 May 2026, and the Rich Results Test no longer checks FAQPage. If you keep FAQ markup, the rule has not changed: every question and answer must be visible on the page in the same words.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Can I cancel at any time?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Cancel from your account settings and you keep access until the end of the billing period."
}
},
{
"@type": "Question",
"name": "Do you offer a free trial?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Every plan includes a 14-day free trial with no card required."
}
}
]
}
</script>
HowTo
Google stopped showing HowTo rich results in September 2023. The markup is still valid schema.org for step-by-step content. totalTime uses an ISO 8601 duration, so PT20M means 20 minutes.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to publish an llms.txt file",
"totalTime": "PT20M",
"tool": [
{
"@type": "HowToTool",
"name": "A text editor"
}
],
"step": [
{
"@type": "HowToStep",
"name": "List your key pages",
"text": "Pick the pages that answer real questions: docs, pricing and policies."
},
{
"@type": "HowToStep",
"name": "Write the file",
"text": "Start with a # heading and a > summary, then add ## sections with a Markdown link per page."
},
{
"@type": "HowToStep",
"name": "Publish it",
"text": "Upload the file to your site root so it loads at /llms.txt."
}
]
}
</script>
Rules that apply to every type
- Describe what is visible. Markup must match the content people see on the page. Marking up hidden or invented content is against Google's guidelines and misleads every other reader of the data.
- Use absolute URLs for url, image, logo and item values.
- Escape it safely. If your text could contain the characters </, escape them in the JSON so they cannot close the script tag early.
- One block per entity is fine. Several separate JSON-LD blocks on a page are valid; you can also combine them with @graph.
- Validate before and after publishing. The Schema.org validator checks every type. Google's Rich Results Test checks the types Google still supports, such as Article, Organization and BreadcrumbList.
Does schema markup help with AI search?
Keep expectations realistic. Google's May 2026 guide to optimizing for its generative AI features says AI Overviews and AI Mode need no special schema; they rely on the same index and ranking systems as ordinary search. For other AI systems there is no public commitment to using structured data when choosing what to cite. Accurate markup still makes the facts on a page unambiguous to any machine that reads it, which is why we add it, but it supports good content rather than replacing it. We go deeper in schema markup for AEO.
Generate it instead of hand-writing it
Hand-written JSON-LD breaks easily: a missing comma or quote makes the whole block unreadable. Our free schema markup generator builds valid JSON-LD for all five types from a form, flags missing and malformed fields, and escapes the output safely. It runs in your browser, so nothing is uploaded.
Sources: Search Engine Land on the end of FAQ rich results, Search Engine Journal on HowTo, Search Engine Land on mobile breadcrumbs, Google's guide to optimizing for generative AI features.