schema.technology

Connecting entities with @id and sameAs

By Joel Maldonado, Neural Command, LLC · Last reviewed 21 October 2026

@id gives a node a stable identifier so every block that uses the same @id is understood as the same thing; sameAs lists pages elsewhere that identify that same thing. Use one absolute @id per entity (for example https://example.com/#organization) on every page, reference it instead of repeating details, and list only your own official profiles in sameAs.

What @id does

In JSON-LD, @id is the identifier of a node. The JSON-LD 1.1 specification calls it a node identifier: an IRI (a URL) or a blank node. When two objects carry the same @id, a JSON-LD processor treats them as the same node and merges their properties.

That gives you two practical benefits:

  1. Describe once, reference everywhere. Put the full Organization on the home page, then refer to it from articles and products with {"@id": "https://example.com/#organization"} instead of repeating the name, logo and address.
  2. One entity, not several. Without a shared @id, a site that marks up its company on ten templates may describe ten slightly different organizations with no explicit link between them.

Choosing @id values

A connected graph

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "Organization", "@id": "https://example.com/#organization",
      "name": "Example Co", "url": "https://example.com/",
      "logo": "https://example.com/logo.png",
      "sameAs": ["https://www.linkedin.com/company/example-co/"] },
    { "@type": "WebSite", "@id": "https://example.com/#website",
      "url": "https://example.com/", "name": "Example Co",
      "publisher": { "@id": "https://example.com/#organization" } },
    { "@type": "Article", "@id": "https://example.com/blog/post/#article",
      "headline": "A post", "isPartOf": { "@id": "https://example.com/#website" },
      "author": { "@id": "https://example.com/about/jane-doe/#person" },
      "publisher": { "@id": "https://example.com/#organization" } },
    { "@type": "Person", "@id": "https://example.com/about/jane-doe/#person",
      "name": "Jane Doe", "url": "https://example.com/about/jane-doe/" }
  ]
}

Every reference points to a node defined in the same graph. If a reference points to an @id that isn't defined anywhere on the page, a tool reading only that page sees an identifier with no name or type. The validator flags these as dangling references.

What sameAs does

Schema.org defines sameAs as the "URL of a reference Web page that unambiguously indicates the item's identity", such as a Wikipedia page, Wikidata entry or official website. Google lists sameAs as a recommended Organization property for profiles on social media or review sites (Organization structured data), and its Article author best practices recommend url or sameAs so Google can tell who an author is.

List only profiles that are clearly about this entity and that you control or that are authoritative: your LinkedIn page, Crunchbase profile, Google Business Profile, official social accounts, a Wikidata item if one exists. The lesson sameAs: linking your website to your other profiles covers what to include and leave out.

@id, url and sameAs compared

Property Points to Example
@id The node itself (an identifier) https://example.com/#organization
url The web page about the thing https://example.com/
sameAs Other pages that identify the same thing https://www.linkedin.com/company/example-co/

Across several websites

If one company runs several sites, choose one canonical @id for the company, usually on its main domain, and use it on every site. Schema Technology does this: every page here references the Neural Command organization and its founder by the same identifiers the main site uses, so anything that merges nodes by @id sees one organization and one person, not new copies. NRLC.ai publishes its full graph at nrlc.ai/knowledge-graph.jsonld if you want to see a working example.

Frequently asked questions

What is the difference between @id, url and sameAs?
@id is the identifier of the node itself. url is the web page about the thing. sameAs lists other pages, usually on other sites, that identify the same thing.
Does Google require @id?
No. It is part of JSON-LD, not a Google requirement. It makes your markup consistent, lets separate blocks refer to each other, and avoids describing your business as several different things.
Can two of my websites use the same @id for my company?
Yes. Pick one canonical @id, usually on your main domain, and reference it from your other sites. That way every site describes the same organization rather than minting a new one.