Skip to main content

How to audit internal linking and crawl traps in Drupal with Entity Mesh

A Drupal technical SEO audit tool that maps internal linking site-wide and reports crawl traps, broken links, redirect chains, and cross-language gaps.

Entity Mesh is a Metadrop Drupal module that makes a site's internal link structure visible. It audits every node the way an anonymous crawler sees it, then aggregates the result into one exportable picture: where navigation breaks, where crawl budget leaks, and where language versions fall out of step. For a content-heavy or multilingual Drupal site, that turns internal linking from an invisible assumption into a measurable part of Technical SEO.

Every link is a navigation intention

Structuring content well starts with knowing how the site actually connects. Few Drupal modules give aggregated, site-wide information about content and its connections, so that picture is usually missing when decisions get made.

Entity Mesh was built to answer a specific question: how do nodes interconnect, and does the navigation they create match the one that was intended? If the goal is for a visitor to buy a product, the path from a landing page should lead to the product, not to the contact form. If the goal is a donation, the path should not end at the newsletter signup.

That makes internal linking more than a UX concern. It is also part of Technical SEO, because search engines follow internal links to discover content and to judge which pages matter most. Each link carries an intention, and the site works as designed only when the real path and the intended path are the same.

When navigation intention breaks: the link problems Entity Mesh catalogs

Most link problems are invisible until something downstream breaks. Each one is a place where the real path and the intended path have quietly diverged. Entity Mesh groups them into categories so each becomes countable and fixable.

  • Broken and access-denied links are the first. A 404 (not found) or 403 (access denied) response wastes crawl budget, the finite time a search bot spends on a site, and many of them tell a bot the page is abandoned. Visitors leave when they cannot navigate. The problem often appears when old content is unpublished or deleted, and the pages that linked to it are hard to locate afterwards. Entity Mesh adds a warning on each node or media delete form showing how many pages link to it, so the references can be corrected before the links break.
Entity Mesh warning on a node delete form, showing how many pages link to the content about to be removed
  • Redirects are next. A redirect sends a request on to another URL. Chains of them slow the page and hurt Core Web Vitals, specifically LCP (the time to load the main content), and loops turn into crawl traps.
  • Malformed URLs and invalid phone numbers waste intent in a simpler way. A malformed URL is not navigable, so the link goes nowhere. An invalid tel: link breaks click-to-call and loses the conversion it was meant to capture.
  • Iframes carry two risks. When an iframe points to the same domain as the page, the embedded content is credited to the source rather than the containing page, which reduces organic visibility. Entity Mesh also inventories which iframes appear and where, which helps confirm the embedded domains are the allowed ones, useful for GDPR compliance and third-party cookie blocking.
  • Insecure HTTP links get flagged as not secure by modern browsers and lose the referer, the signal that tells the destination where the visit came from. Pages with no outgoing links are dead ends that hold crawl flow and pass no internal authority to other content, and depending on the content type, they also lose intent by offering no next step. Finally, menu relationships record the real parent-to-child relationship between the pages the analyzed menus point to, so the information architecture and click depth can be checked against the structure that was expected.

Seeing the site the way a crawler does

Entity Mesh catches these problems because of how it reads the site: as the intended audience sees it, not as raw data. It analyzes the rendered entity, the page as a visitor or crawler would see it, rather than reading raw fields. That means it captures links inside CKEditor, blocks, and paragraphs, wherever they actually appear on the page.

The reading is deliberately faithful to a real crawler. Entity Mesh reads what the server renders and extracts links from the DOM. It does not open the page in a browser and run JavaScript, so links injected on the client fall outside its scope. That boundary is what keeps the picture accurate: what it reports is exactly what a session-less crawler would find.

Rendering uses a configurable account, anonymous by default, with the real site theme applied. What gets analyzed is exactly what a session-less visitor or crawler sees, which is how it detects links to content an anonymous user cannot reach.

The same faithful rendering runs per language. On multilingual sites Entity Mesh renders each translation separately and stores the language of both the source and the target of every link. That audits linking coherence between versions of the same content, and it surfaces a link that points to a translation which does not exist, or a place where one language version links somewhere its counterpart does not. The gap between intended and actual navigation is checked in every language, not only the default one.

It is built on entity_registry, the same dependency behind Content First. Similar to how search_api builds its index, it renders each node in batch and extracts a list of links per entity. That batch runs on cron or on demand, and the analysis also hooks into entity creation and update, so the aggregated picture refreshes on save or on the next cron run depending on site size and mode instead of waiting for the next full run.

The interconnection graph and the exportable links view

Once the site is read this way, the divergences stop being anecdotes and become something to look at. Entity Mesh presents its findings in a few views.

  • The overview lists each case with a counter of how many nodes it affects, so the state of the entire site reads at a glance.
Entity Mesh Overview report listing link cases with a count of affected nodes per category
  • The graph draws the site as connected nodes. Patterns become visible here: several satellite pages pointing to one central node signal to search engines that the central node carries more importance.
Entity Mesh D3 graph of node interconnections, a dense central cluster with satellite groups color-coded by entity type
  • The links view shows how any two pages connect, and the targets are not only internal nodes. They can be external pages, phone numbers, emails, or iframes. Filter by category, subcategory, entity type, bundle, language, and scheme (http, https, tel, mailto), search by target URL, then export the result to CSV to work the audit outside Drupal.
Entity Mesh links table with filters and columns for target href, scheme, host, path, and entity type
  • A Drupal status report groups the same site state by the main categories, so the health check sits alongside Drupal's own reporting.

A continuous technical SEO audit, part of a Metadrop audit toolkit

Put together, the checks form a technical SEO checklist for internal linking: pages with no outgoing links, broken links, links to inaccessible content, redirects and loops, malformed URLs, invalid phone numbers, insecure HTTP links, iframes and third-party domains, and cross-language coherence. Each item is one more way the real path can drift from the intended one, now measured rather than assumed.

Entity Mesh is one of several Metadrop audit tools, many of them published open on drupal.org. Each answers a different question about the site, and together they build the full view. A few examples:

  • Redirect Audit: surfaces redirect chains, loops, and stale rules that leak crawl budget.
  • Content First: the submodule of content_first, Content First Audit: checks heading structure, alt text, and invalid markup on every rendered page, so content stays semantically sound for crawlers and screen readers.
  • Xray Audit: inventories content types, fields, entities, displays, and the modules and views behind them, to show how a site is actually built.

Run across an entire site, these checks turn thousands of scattered links and page-level signals into one aggregated picture: which content connects, where crawl budget leaks, and which links break between languages. From that picture comes a report that points to specific pages and specific fixes, each with a measurable effect on rankings, crawl efficiency, and conversions. The gap between the navigation a site intended and the navigation it actually offers stops being invisible and becomes a list.

Contact Metadrop for a technical SEO audit.

  • Eduardo Morales Alberti

    Eduardo Morales

    Senior Drupal developer