We respect your privacy.

We use strictly necessary cookies to keep you signed in and to protect against CSRF. With your permission we also use a small amount of first-party analytics to improve the product. We do not sell your data and we do not use third-party advertising trackers. See our cookie policy and privacy policy .

← All learn topics

Rule page.structured-data.id-broken-reference

Fix broken JSON-LD @id reference

page.structured-data.id-broken-reference is a check in Crawlmind's site audit that grades medium-impact issues of this kind. This page explains why the rule matters and the exact fix.

Impact: mediumEffort: lowFixable: 1-click

Why it matters

JSON-LD nodes can reference each other by `@id`: e.g. `publisher: { @id: "https://example.com/#organization" }` points at the Organization node defined elsewhere. When the target `@id` doesn't exist anywhere in the document, the reference dangles. Google's Rich Results test ignores the broken graph; you get whichever rich result was depending on the resolution silently dropped.

The fix

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://example.com/#organization",   ← the target
      "name": "Brand"
    },
    {
      "@type": "Article",
      "publisher": { "@id": "https://example.com/#organization" }  ← matches
    }
  ]
}
</script>
```

Two ways the reference breaks:

- The `@id` URL is mistyped (`#org` vs `#organization`)
- The target node was deleted but references to it weren't

Validate with [Google's Rich Results test](https://search.google.com/test/rich-results): it shows resolved vs. unresolved references in the parsed output.

References