The @id property in JSON-LD is a globally unique identifier you assign to an entity so that search engines and AI systems can recognize it as the same thing every time it appears — across pages, across schema blocks, and across your whole site. If you want your organization, your authors, your products, and your articles to be understood as stable entities rather than disconnected fragments of markup, giving each one a consistent @id is the single most important habit to build.

What @id actually does

Most structured data explains a single thing on a single page. But real websites describe the same entities over and over: your Organization appears in the footer schema of every page, your author appears on dozens of articles, one product is referenced from a review, a breadcrumb, and a collection page. Without a shared identifier, each of those mentions looks like a brand-new, unrelated node to a parsing engine.

The @id gives every entity a canonical name in the form of a URI. When two blocks of markup carry the same @id, consumers treat them as the same entity and merge what they know. This is how you build a connected graph instead of a pile of isolated snippets — the same principle behind connecting your structured data with @graph and nesting.

How to choose stable @id values

An @id should be a URL you control, and it should never change once published. The most common and reliable pattern is a URL with a fragment identifier that names the entity:

The fragment (the part after #) is a naming convention, not a fetchable resource — it lets you mint several distinct identifiers under one page URL. Keep the values lowercase, predictable, and permanent. If you later restructure your URLs, resist the temptation to rewrite existing @id values, because doing so tells machines the old entity ceased to exist and a new one appeared.

Reference once, define everywhere

The real power of @id is that you define an entity fully in one place and reference it by ID everywhere else. Instead of copying your full Organization block into every Article, you define the Organization once and then point to it:

This keeps your markup small, prevents contradictory copies of the same entity, and makes updates trivial — change the definition once and every reference inherits it. It is the same discipline that makes JSON-LD easier to maintain than Microdata or RDFa: your data lives in one decoupled block instead of being scattered through the HTML.

Common mistakes to avoid

Several patterns quietly break the benefit of @id. Watch for these:

Why this matters for AI visibility

AI answer engines and knowledge graphs are built around entities, not keywords. When an assistant decides whether your brand is a trustworthy source, it is reasoning about an entity and everything it can connect to that entity. Stable identifiers make those connections possible: they let a system tie your Organization to your authors, your authors to their articles, and your articles to the topics they cover. That connected structure is exactly what strong entity SEO and knowledge graph building depends on. Sites with clean, consistent identifiers give machines a coherent picture; sites with fragmented markup force them to guess.

Getting @id right is invisible to human visitors but foundational for how machines model your site. If you are not sure whether your structured data forms a connected graph or a scattered mess, run the CheckMy.site scanner to see how crawlers and AI assistants actually read your pages — and fix the gaps before they cost you citations.