Panduan JSON-LD

JSON-LD adalah script-based data terstruktur format Google recommends — easiest untuk implement, tidak pernah touches terlihat HTML, dan typically pairs dengan schema.org untuk SEO.

Pertama kali diterbitkan: 26 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Lanjutan
1 sinyal bukti di halaman ini

JSON-LD (JavaScript Object Notation untuk ditautkan data) adalah sebuah data terstruktur format itu lives di sebuah <script type="application/ld+json"> tag; pada SEO side ini adalah typically paired dengan schema.org vocabulary untuk deskripsikan halaman konten, though JSON-LD itself dapat carry lainnya vocabularies too. ini adalah sebuah W3C standard (2014), dan Google recommends ini di atas Microdata dan RDFa untuk satu alasan: ini adalah easiest format untuk implement dan maintain di scale, karena ini sits di -nya own block dan tidak pernah touches Anda terlihat HTML. semua three formats berfungsi equally well ketika implemented correctly. syntax spine adalah @context ( vocabulary — schema.org untuk sebagian besar SEO markup, tetapi tidak satu-satunya valid nilai), @jenis ( entity), dan @id (sebuah berguna tetapi opsional stable URI untuk linking entities — basis dari @graph pattern, itself satu valid cara untuk organize multiple entities, tidak sebuah requirement). catch sebagian besar guides miss: Googlebot renders JavaScript so dynamically injected JSON-LD berfungsi untuk Google, tetapi several AI crawler — GPTBot dan ClaudeBot disertakan, sebagai tested — jangan execute JavaScript; itu's provider- dan date-spesifik, tidak sebuah universal aturan, so verify secara langsung jika sebuah particular crawler penting untuk Anda dan server-render markup Anda dapat't konfirmasi jika tidak. data terstruktur adalah tidak sebuah sinyal peringkat; ini governs rich-hasil eligibility dan entity understanding, dan ini harus deskripsikan konten sebenarnya terlihat pada halaman.

TL;DR — JSON-LD (JavaScript Object Notation untuk ditautkan data) adalah sebuah W3C Recommendation dari 2014 — dibangun pada JSON, tetapi @context adalah apa membuat ini ditautkan data, tidak hanya JSON. ini adalah data terstruktur format Google recommends karena ini adalah easiest untuk implement dan maintain di scale dan tidak pernah touches terlihat HTML; Microdata dan RDFa adalah equally valid ketika correct. syntax spine adalah @context (vocabulary — schema.org untuk sebagian besar SEO markup, though spec memungkinkan lainnya contexts), @type (entity), @id (sebuah berguna tetapi opsional stable URI untuk cross-referencing entities — basis dari @graph, itself satu valid pattern among others, tidak sebuah requirement). Place ini di <head> atau <body> — Google accepts either. Googlebot renders JS so dynamically injected JSON-LD berfungsi untuk Google; several AI crawler (GPTBot, ClaudeBot disertakan, sebagai tested) jangan execute JS, tetapi itu’s provider- dan date-spesifik — verify secara langsung alih-alih assuming ini untuk setiap AI crawler, dan server-render apa Anda dapat’t konfirmasi. data terstruktur adalah tidak sebuah sinyal peringkat — ini drives rich-hasil eligibility dan entity understanding, dan ini harus deskripsikan konten terlihat pada halaman.

JSON-LD adalah sebuah format, tidak sebuah vocabulary

pertama, sebuah pembedaan itu clears up sebuah lot dari confusion: JSON-LD adalah format; schema.org adalah vocabulary. JSON-LD adalah bagaimana Anda tulis markup; schema.org’s Article, Product, Organization jenis adalah apa Anda say. Rich hasil adalah fitur layer pada top dari keduanya. ini halaman adalah tentang format. ( vocabulary-untuk-AI angle lives di Schema Markup untuk AI.)

JSON-LD adalah sebuah W3C Recommendation, pertama published di 2014 — ini lebih lama dari -nya SEO adoption dan adalah designed untuk umum ditautkan-data interoperability di seluruh web, tidak secara khusus untuk penelusuran. itu history adalah mengapa sebuah property like @id ada di semua, dan ini adalah spec-tingkat poin sebagian besar SEO guides skip: JSON-LD adalah tidak hanya JSON. ini adalah dibangun pada JSON syntax, tetapi @context declaration adalah apa membuat data ditautkan — identifiable dan connectable di seluruh web. Strip @context dan Anda’ve mendapat data sebuah parser dapat’t interpret.

JSON-LD juga tidak married untuk schema.org. spec lets @context reference apa pun published vocabulary — -nya own contoh tautan untuk non-schema.org contexts — so JSON-LD adalah right jawaban untuk “apa format” (terjemahan) “apa format” sementara schema.org adalah satu jawaban, umum satu untuk penelusuran dan AI-penelusuran markup, untuk “apa vocabulary.” (terjemahan) “apa vocabulary.” sebuah halaman dapat validly gunakan JSON-LD dengan sebuah berbeda vocabulary; ini hanya tidak akan menjadi schema.org markup anymore.

«## JSON-LD vs. Microdata vs. RDFa » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh enam, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

ada three cara untuk express data terstruktur, dan Google mendukung semua dari them:

JSON-LDMicrodataRDFa
Di mana ini livessebuah terpisah <script> blockInline itemprop attributes pada Anda HTMLInline property attributes pada Anda HTML
Touches terlihat HTML?TidakYaYa
dapat menjadi injected oleh JS / tag manager?Ya (cleanly)AwkwardAwkward
Google’s stanceRecommendeddidukungdidukung
Error-pronenessLowestLebih tinggi (tangled dengan markup)Lebih tinggi (tangled dengan markup)

«Google’s recommendation is explicit but narrowly scoped: “In general, Google recommends using JSON-LD for structured data if your site’s setup allows it, as it’s the easiest solution for website owners to implement and maintain at scale (in other words, less prone to user errors).” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh sembilan, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

nuance pesaing biasanya drop — dan satu worth mempertahankan — muncul dari sama Google halaman: “All 3 formats adalah equally fine untuk Google, sebagai long sebagai itu markup adalah valid dan properly implemented per itu feature’s documentation.” (terjemahan) “semua 3 formats adalah equally fine untuk Google, sebagai panjang sebagai markup adalah valid dan properly implemented per fitur’s documentation.” So recommendation adalah tentang implementation ease dan error rate, tidak parsing speed atau peringkat advantage. menggunakan Microdata adalah tidak sebuah penalty. JSON-LD hanya wins dalam praktik karena ini tidak entangle data terstruktur dengan markup sebuah designer mungkin edit besok.

syntax: @context, @jenis, @id, properties, nesting

Di sini’s sebuah annotated Article block:

<script type="application/ld+json">
{
  "@context": "https://schema.org",          // the vocabulary — the common value for SEO
  "@type": "Article",                          // the entity type
  "@id": "https://example.com/post#article",   // a stable URI for this entity
  "headline": "How JSON-LD Works",            // a property (key/value)
  "datePublished": "2026-06-26",
  "author": {                                  // a nested entity
    "@type": "Person",
    "name": "Patrick Stox",
    "url": "https://patrickstox.com/"
  }
}
</script>
  • @context — establishes semantic kerangka kerja ( vocabulary). untuk schema.org SEO markup ini adalah typically "https://schema.org", tetapi itu’s sebuah convention, tidak sebuah aturan: @context maps istilah untuk identifiers, dan spec lets ini poin untuk lainnya vocabularies. ini tells parser cara interpret setiap property name itu mengikuti. ini adalah bagian itu membuat ini ditautkan data.
  • @type — declares entity: Article, Product, Organization, BreadcrumbList, dan seterusnya. ini maps untuk sebuah schema.org jenis. gunakan sebagian besar spesifik applicable jenis — NewsArticle di atas Article jika ini fits.
  • @id — sebuah unique URI identifying resource. ini adalah mechanism itu lets Anda reference satu entity dari lainnya (see @graph di bawah), dan ini adalah worth setting pada apa pun Anda’ll cross-reference — tetapi ini adalah tidak universally diperlukan. JSON-LD spec permits unidentified blank nodes, so valid JSON-LD dapat omit @id pada entities Anda tidak pernah perlu untuk reference elsewhere.
  • Properties — ordinary JSON key/nilai pairs, menggunakan vocabulary istilah dari @context.
  • Nesting — child entities adalah expressed sebagai nested JSON objects ( author object di atas) atau arrays dari objects.

@graph pattern ( scalable approach)

sebagian besar halaman perlu lebih daripada satu entity: sebuah Organization, sebuah WebSite, sebuah BreadcrumbList, dan Article atau WebPage itself. naive approach adalah four terpisah <script> blocks itu repeat data. sebuah scalable alternative adalah sebuah single block dengan @graph — sebuah array dari entities, cross-referenced oleh @id. Neither JSON-LD spec nor Google mandates @graph sebagai ** pattern — ini adalah syntax untuk expressing sebuah graph, dan lainnya valid layouts exist (terpisah typed blocks, nested objects tanpa sebuah top-tingkat @graph, blank nodes dengan Tidak @id di semua) — tetapi pada sebuah situs dengan several cross-referenced entities, ini adalah pattern itu menghindari repeating yang sama Organization atau WebSite data pada setiap halaman:

Declare setiap entity setelah dan connect graph dengan stable `@id` references alih-alih repeating penuh objects. Sumber: Nested Schema

Satu Organization adalah referenced sebagai publisher oleh situs web dan artikel. WebPage belongs untuk situs web dan adalah connected untuk artikel. setiap entity adalah declared setelah, dan yang sama stable ID string adalah reused untuk setiap reference.

© Patrick Stox LLC · CC BY 4.0 ·

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#org",
      "name": "Example Co",
      "url": "https://example.com/"
    },
    {
      "@type": "WebSite",
      "@id": "https://example.com/#website",
      "url": "https://example.com/",
      "publisher": { "@id": "https://example.com/#org" }   // reference, not a copy
    },
    {
      "@type": "WebPage",
      "@id": "https://example.com/post#webpage",
      "isPartOf": { "@id": "https://example.com/#website" },
      "breadcrumb": { "@id": "https://example.com/post#breadcrumb" }
    }
  ]
}
</script>

Define Organization setelah, lalu poin di ini dengan { "@id": "...#org" } di mana-mana else alih-alih repeating name, logo, dan URL. ini adalah bagaimana major CMS schema plugins bangun mereka output, dan ini adalah mengapa @id ada. Bing membuat yang sama case untuk JSON-LD’s nesting: ini “membuat defining links dan relationships antara data dan entities… easy karena it mendukung nested data.” (terjemahan) “membuat defining tautan dan relationships antara data dan entities… easy karena ini mendukung nested data.”

Di mana untuk place ini: <head> atau <body>

Google mengonfirmasi keduanya berfungsi — “Anda dapat put itu JSON-LD data di itu <head> atau itu <body> dari itu halaman.” (terjemahan) “Anda dapat put JSON-LD data di tidak terdefinisi atau tidak terdefinisi dari halaman.” <head> adalah conventional, tetapi plenty dari CMS plugins inject ini near end dari <body>, dan itu’s fine. Bing agrees ini dapat sit “di itu header, body atau foot dari itu halaman.” (terjemahan) “di header, body atau foot dari halaman.” jangan burn time relocating sebuah valid block dari body untuk head; ini perubahan tidak ada apa pun. Bukti untuk klaim ini Google permits JSON-LD in either the head or body of an HTML document for supported structured-data features. Cakupan: Google Search JSON-LD guidance; markup must still match visible page content. Tingkat keyakinan: tinggi · Diverifikasi: Google: Structured data introduction

Generating JSON-LD dynamically — dan AI crawler catch

Anda dapat bangun JSON-LD pada fly dengan JavaScript, dan Google documents dua cara untuk melakukan ini:

Bukti untuk klaim ini Dynamically generated structured data is acceptable to Google when it is rendered and complies with content and quality guidelines. Cakupan: Google Search JavaScript and structured-data guidance; crawlability and rendering remain prerequisites. Tingkat keyakinan: tinggi · Diverifikasi: Google: Generate structured data with JavaScript
  1. Google Tag Manager — sebuah Custom HTML tag containing JSON-LD, pulling nilai dari GTM variables. (hindari duplicating data antara halaman dan tag.)
  2. Custom JavaScript — buat script element programmatically:
  const script = document.createElement('script');
  script.setAttribute('type', 'application/ld+json');
  script.textContent = structuredDataText;
  document.head.appendChild(script);

«This works for Googlebot, because Google renders the page: “Google Search can understand and process structured data that’s available in the DOM when it renders the page.” So far, so good. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian empat puluh lima, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

Di sini’s catch sebagian besar guides miss, stated dengan hati-hati. Several AI crawler — including GPTBot dan ClaudeBot, sebagai commonly tested — memiliki tidak executed JavaScript. jika Anda JSON-LD hanya ada setelah sebuah client-side script berjalan, sebuah JS-skipping crawler tidak pernah sees ini — ini adalah invisible untuk itu bot bahkan though Googlebot membaca ini fine, karena Google documents rendering DOM sebelum ini looks untuk data terstruktur.

Dua honest caveats pada itu AI-crawler perilaku: ini adalah Google’s own documentation itu establishes Googlebot side; AI-crawler side muncul dari testing dan reporting pada individual providers, tidak sebuah spec apa pun dari them publish, so ini adalah provider- dan date-spesifik — sebuah crawler’s JavaScript mendukung dapat perubahan, dan I haven’t verified setiap provider secara langsung. jangan treat “AI crawlers skip JS” (terjemahan) “AI crawler skip JS” sebagai sebuah universal aturan untuk bangun pada; treat ini sebagai sebuah alasan untuk periksa crawler Anda sebenarnya care tentang (atau default untuk server rendering ketika Anda dapat’t periksa). jika ini tidak di server-dirender HTML dan Anda haven’t confirmed crawler executes JS, assume ini dapat’t see ini. untuk AI-penelusuran visibilitas, render JSON-LD server-side ke static HTML unless Anda’ve verified jika tidak. (ini adalah JavaScript-rendering masalah dari sebuah structured-data angle — see JavaScript SEO.)

ada sebuah kedua caveat untuk ecommerce: Google warns itu dynamically generated Product markup “dapat membuat Shopping crawls lebih sedikit frequent dan lebih sedikit reliable,” (terjemahan) “dapat membuat Shopping melakukan crawl lebih sedikit frequent dan lebih sedikit reliable,” yang adalah sebuah nyata masalah untuk fast-mengubah price dan availability. untuk products, prefer rendering sisi server regardless dari AI.

policies (ini memiliki teeth now)

Google’s data terstruktur guidelines adalah pendek dan muat-bearing:

  • “Don’t mark up content that is not visible to readers of the page.” (terjemahan) “jangan mark up konten itu adalah tidak terlihat untuk readers dari halaman.”
  • “Don’t mark up irrelevant or misleading content, such as fake reviews.” (terjemahan) “jangan mark up irrelevant atau misleading konten, such sebagai fake reviews.”
  • “Put the structured data on the page that it describes.” (terjemahan) “Put data terstruktur pada halaman itu ini mendeskripsikan.”
  • “Use the most specific applicable type and property names defined by schema.org.” (terjemahan) “gunakan paling spesifik applicable jenis dan property names didefinisikan oleh schema.org.”
  • jangan block Anda structured-data halaman dari Googlebot melalui robots.txt atau noindex.

«The visible-content rule is the one to internalize. Schema that describes content not shown on the page has always been a violation; enforcement of “invisible” schema has tightened. Bing puts the warning bluntly: “even though the markup is not visible on your page, it is still read by the search engines, and putting spam data in the markup can hamper your presence.” » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian lima puluh dua, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)

umum JSON-LD mistakes

  • Markup itu tidak match terlihat halaman — #1 policy masalah (sebuah rating di JSON-LD itu Tidak pengunjung sees).
  • Malformed JSON — sebuah trailing comma, sebuah unescaped quote, atau kata smart quotes (" alih-alih ") itu silently break seluruh block. JSON-LD adalah strict.
  • Wrong property names — inventing properties itu tidak di schema.org, atau misspelling nyata ones, so parser ignores them.
  • sebuah generic jenis di mana sebuah spesifik satu ada — Thing atau Article di mana Recipe atau NewsArticle adalah warranted.
  • Duplicate, inconsistent Organization blocks di seluruh halaman dengan conflicting names/logos.
  • Missing diperlukan properties untuk rich hasil Anda’re targeting (setiap fitur lists -nya own diperlukan fields).
  • JS-injected markup assumed untuk menjadi terlihat untuk setiap crawler — Google renders ini, tetapi beberapa AI crawler memiliki tidak, dan itu’s worth verifying per crawler ( catch di atas).

Validating JSON-LD

Four berbeda pertanyaan mendapatkan ditanyakan di bawah “adalah my JSON-LD valid,” (terjemahan) “adalah my JSON-LD valid,” dan mereka’re tidak sama pertanyaan — passing satu tidak lulus others:

TestProvesmelakukan tidak prove
JSON parses (apa pun JSON linter, atau Rich hasil Test’s parse langkah)syntax adalah legal JSON — Tidak trailing commas, unescaped quotes, atau smart-quote breakageitu apa pun property name adalah nyata schema.org vocabulary, atau itu Google akan tampilkan apa pun
Schema.org Validatorproperties dan jenis exist di schema.org vocabularyitu Google mendukung jenis sebagai sebuah rich hasil, atau itu diperlukan fields untuk sebuah spesifik fitur adalah present
Rich hasil Testmarkup memenuhi Google’s requirements untuk sebuah spesifik didukung rich-hasil jenis, pada dirender halaman Anda testeditu Google akan sebenarnya display rich hasil — eligibility tidak sebuah jaminan — atau itu lainnya penelusuran/AI sistem parse ini yang sama cara
Google Search Console — Enhancements / rich hasil reportsApa Google sebenarnya parsed pada langsung, di-crawl halaman, di scale, dengan nyata errorsnyata-time state — reports lag behind sebuah recrawl
  • Test oleh URL, tidak pasted code, untuk JS-dirender halaman. Rich hasil Test’s code-input mode tidak jalankan Anda scripts atau resolve relative references cara langsung-URL testing melakukan — ini dapat’t tell Anda apa sebuah client-side-injected block looks like setelah rendering.
  • Bing Webmaster alat — Markup Validator — Bing memiliki validated JSON-LD since August 2018.
  • None dari ini tests speak untuk crawler itu jangan render JavaScript (see AI-crawler caveat di atas) — testing dirender URL mengonfirmasi apa Google sees, tidak apa sebuah JS-skipping bot menerima.

melakukan JSON-LD help SEO?

Set expectations honestly:

  • Tidak sebuah sinyal peringkat. John Mueller memiliki mengatakan data terstruktur tidak akan membuat sebuah situs peringkat better. Penuh berhenti.
  • Rich-hasil eligibility. ini adalah apa membuat Anda eligible untuk enhanced SERP fitur (stars, prices, FAQs, breadcrumbs) — eligibility, tidak sebuah jaminan.
  • CTR, indirectly. Richer-looking hasil dapat earn lebih clicks, yang adalah nyata payoff untuk sebagian besar situs.
  • Entity understanding. ini helps mesin connect Anda halaman untuk known entities dan graf pengetahuan.
  • AI penelusuran. Fabrice Canel (Bing) confirmed di 2025 itu schema markup helps Microsoft’s LLMs memahami konten — tetapi note controlled-study caveat dari Schema Markup untuk AI: ini adalah infrastructure untuk disambiguation, tidak sebuah direct citation lever.

So: implement JSON-LD untuk rich-hasil eligibility, entity clarity, dan AI/LLM comprehension — tidak sebagai sebuah peringkat hack.

ini artikel sits di data terstruktur hub. untuk AI-spesifik take pada schema.org vocabulary, see Schema Markup untuk AI; untuk rendering mechanics behind dynamic injection, see JavaScript SEO.

Tambahkan catatan pakar

Sematkan kutipan pakar

Orang baru? Buat profilnya yang belum diklaim di /admin/experts/ → Sematkan kutipan pakar terlebih dahulu.