What is JSON-LD — the structured data format search engines love
JSON-LD is the recommended format for embedding Schema.org structured data in web pages — clean, maintainable, and completely separate from your visible HTML.
Three ways to add structured data
When Schema.org was first proposed, it recommended embedding structured data directly in your HTML using Microdata — adding special attributes like itemscope, itemtype, and itemprop to your existing HTML elements.
Later, RDFa (Resource Description Framework in Attributes) offered another HTML-attribute-based approach, more expressive but even more verbose.
Both approaches have the same fundamental problem: they require you to modify your HTML template to add semantic attributes to every element. Change your template, and you risk breaking your structured data. Add an element, and you have to remember to annotate it.
JSON-LD (JavaScript Object Notation for Linked Data) solves this cleanly.
What JSON-LD looks like
JSON-LD lives in a <script> block in your page's <head>:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is AI Boost for Joomla?",
"acceptedAnswer": {
"@type": "Answer",
"text": "AI Boost for Joomla is an all-in-one SEO and AEO plugin that generates Schema.org, XML sitemaps, llms.txt, and AI crawler signals automatically."
}
}
]
}
</script>The script tag has type application/ld+json, which tells browsers to treat it as data, not executable JavaScript. Search engines and AI crawlers read it directly from the parsed HTML.
Why JSON-LD is the recommended format
Google has explicitly stated that JSON-LD is their preferred format for structured data. The reasons are practical:
No HTML modification required. JSON-LD is injected as a separate block, completely independent of your visible HTML. You can change your page template, add or remove elements, redesign entirely — and your structured data stays correct.
Easy to validate and debug. The JSON structure is self-contained. You can copy the entire block, paste it into Google's Rich Results Test or Schema.org's validator, and see immediately whether it is correct.
Multiple schemas on one page. A page can have multiple <script type="application/ld+json"> blocks. Your article page can simultaneously declare an Article schema, a BreadcrumbList schema, and a FAQPage schema — independently, without interference.
Server-side generation. Because JSON-LD is just text output, it can be generated server-side by your CMS and inserted into the page's <head> at render time. No client-side JavaScript required. No rendering delay.
Common JSON-LD types and their use cases
| Type | Use case |
|---|---|
| Organization | Business identity, contact, social profiles |
| LocalBusiness | Physical location, opening hours, address |
| Article | Blog posts, news articles |
| FAQPage | FAQ sections, question-and-answer content |
| Event | Concerts, conferences, appointments |
| Product | E-commerce product pages |
| BreadcrumbList | Navigation path (Home > Blog > Article) |
| Hotel | Accommodation with check-in, amenities |
| Person | Author profiles, professional portfolios |
Validating your JSON-LD
Google provides the Rich Results Test at search.google.com/test/rich-results. Paste a URL or a code snippet and it shows which rich result types your structured data qualifies for, and any errors or warnings.
For development and debugging, Schema.org's validator at validator.schema.org checks structural correctness independent of rich result eligibility.
How AI Boost for Joomla generates JSON-LD
AI Boost for Joomla generates all Schema.org blocks as JSON-LD, injected into the <head> of every page. You never write or edit JSON-LD manually.
The plugin reads your configuration (organisation name, address, phone, social profiles, schema type, FAQ data, events, ratings), constructs the correct JSON-LD structure for each page, and outputs it server-side. The markup it emits is syntactically valid; how far it satisfies the Rich Results Test depends on how completely you fill in your details, because a required field left blank is a required field missing.