Schema.org @id

The Citead team, updated

In short. In Schema.org JSON-LD, @id identifies a node so that other descriptions can refer to the same entity.

Definition: In Schema.org markup, @id is a keyword of JSON-LD, a JSON format for expressing linked data as entities and their relationships. It identifies an entity so that other descriptions can refer to that entity.

The starting point is the W3C JSON-LD 1.1 specification, a Recommendation dated 16 July 2020. Its data model is a graph: nodes represent resources, and properties connect them. An entity described in markup is represented by a node.

Key facts

  • The W3C keyword definition allows @id to identify a node using an Internationalized Resource Identifier (IRI) or a blank node identifier, a label scoped to the document.
  • Schema.org's data model defines types and properties and uses underlying formats including JSON-LD.
  • Schema.org defines url as the URL of the item.
  • Schema.org defines sameAs as the URL of a reference page that unambiguously indicates the item's identity, with Wikipedia and Wikidata among its examples.

How does @id connect descriptions?

The W3C node identifiers section illustrates identification with Markus Lanthaler. This complete JSON snippet retains the identifier and name mapping from that example, with the omitted fields removed:

{
  "@context": {
    "name": "http://schema.org/name"
  },
  "@id": "http://me.markus-lanthaler.com/",
  "name": "Markus Lanthaler"
}

Here, @context maps the short name name to a Schema.org property. The @id value identifies the node described by the object. An object containing only @id is a node reference. Used as a property value, {"@id": "http://me.markus-lanthaler.com/"} refers to this node without repeating its name.

The same specification permits a node's properties to be spread across different objects within a document. Processing merges those properties into the resulting node. This is the practical role of a shared identifier when descriptions occur in different parts of the data.

How do @id, url and sameAs differ?

@id belongs to JSON-LD syntax. Schema.org's url definition describes a property whose value is the item's URL. In the example above, identification happens through @id; adding a url property would supply an additional statement about the item.

The sameAs definition describes an identifying reference page. It gives an item's Wikipedia page, Wikidata entry or official website as examples. The property expresses a relationship to that reference page; @id supplies the identifier of the node being described.

These roles help distinguish the entity's identifier from the web pages supplied as information about it. A sameAs link requires a page that unambiguously indicates identity, according to Schema.org's definition.

How do relative identifiers and blank nodes work?

An IRI is an identifier with a scheme and path, and optional query and fragment segments. The W3C base IRI section explains that relative identifiers resolve against a base address. Its example uses an empty @id, which resolves to the document base and changes when the document moves. The @base keyword can set that base explicitly.

For identifiers reused across pages, an absolute IRI avoids dependence on each page's base address. Reviewing the resolved value matters when markup is copied between pages.

A blank node represents a resource without an IRI. Its identifier begins with _: and is scoped to the document. The same specification explains that processors may relabel blank node identifiers and recommends a dereferenceable IRI, one that returns a representation when accessed, when a node needs references from other documents.

FAQ

Must every object have @id?

The W3C blank node guidance allows nodes without explicit identifiers. An identifier becomes useful when another description needs to refer to that node.

Can an @id contain a fragment such as #me?

Yes. The same specification allows fragment segments in IRIs and uses https://greggkellogg.net/foaf#me to identify a person in its linking examples.

Does the capitalization of @id matter?

Yes. The specification states that JSON-LD keys, keywords and values are case-sensitive. Use the lowercase spelling @id.

Sources

  1. W3C, "JSON-LD 1.1", 16 July 2020
  2. Schema.org, "Data model", accessed 17 October 2026
  3. Schema.org, "url", accessed 17 October 2026
  4. Schema.org, "Schema.org vocabulary: sameAs", accessed 17 October 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark