London Web Factory

SEO Spider How Link Metrics Are Calculated

This guide explains the difference between raw HTML anchor counts, crawlable links, unique destinations, incoming links and resources in LWF SEO Spider.

The Short Version

Metric What is counted
A Tags Every rendered <a> element on the source page, including anchors that are not crawlable.
Outlinks Qualifying internal link occurrences from the source page.
Unique Outlinks Distinct normalised internal target URLs linked from the source page.
External Outlinks Qualifying external link occurrences from the source page.
Unique External Outlinks Distinct normalised external target URLs linked from the source page.
Inlinks Qualifying internal link occurrences from crawled source pages that point to the target URL.
Unique Inlinks Distinct internal source URLs containing at least one qualifying link to the target URL.
External Links table Inlinks Qualifying link occurrences from crawled internal pages to that external target.
Resources Captured uses of images, scripts, stylesheets and other page resources; separate from link metrics.

An occurrence is one qualifying anchor found in the rendered DOM. A unique count deduplicates occurrences by a normalised source or target URL, depending on the metric.

What Qualifies as a Link

The crawler starts with rendered <a href> elements. A link is included in Outlinks or External Outlinks only when its destination can be resolved to an HTTP or HTTPS content URL.

The crawler excludes:

  • <a> elements with no href;
  • empty href values;
  • links containing only a fragment, such as `

contact`;

  • same-page fragment links, such as `https://example.com/page/

contact` when found on that page;

  • mailto: email links;
  • tel: telephone links;
  • sms: links;
  • javascript: links;
  • malformed URLs;
  • anchor destinations whose final path extension clearly represents a static or media resource rather than linked content.

The excluded link-extension list includes common image, stylesheet, script, font, audio, video, executable and archive formats. A PDF link is a content destination and is included. Resources embedded with src, srcset, stylesheet links and browser network activity are tracked separately as Resources.

Fragment and Query Handling

A link to a section on another page counts as a link to that page. The fragment does not create a separate destination.

/services/

# seo       -> https://example.com/services/
/services/

# training  -> https://example.com/services/

In that example, two anchors produce:

  • Outlinks: 2
  • Unique Outlinks: 1

Common tracking parameters are removed and remaining query parameters are sorted before stored link identities are compared.

/course?id=7&utm_source=email
/course?utm_medium=social&id=7

Those anchors normally identify the same target. A meaningful retained parameter can still identify a different destination:

/course?id=7
/course?id=8

Internal and External Classification

A target is internal when its host, including any explicit port, matches the crawl scope host. Subdomains are separate hosts.

Source crawl host Target Classification
www.example.com https://www.example.com/about/ Internal
www.example.com http://www.example.com/contact/ Internal
www.example.com https://example.com/ External
www.example.com https://shop.example.com/ External

Changing from HTTP to HTTPS does not by itself make a link external. Changing the hostname, subdomain or port does.

A Tags

A Tags is a raw structural count of all <a> elements in the rendered DOM. It answers: "How many anchor elements are present?"

It includes anchors that Outlinks deliberately excludes, such as:

  • an anchor with no href;
  • an email or telephone link;
  • a same-page jump link;
  • an anchor around an image;
  • a JavaScript pseudo-link.

It can therefore be greater than:

Outlinks + External Outlinks

A Tags is useful for inspecting HTML structure. Outlink metrics are useful for analysing navigable content destinations. They should not be expected to match.

Outlinks

Outlinks is the total number of qualifying internal link occurrences on a source page.

If a page contains a header link, body link and footer link to the same internal URL, all three are counted:

Source: https://example.com/
Target: https://example.com/contact/
Occurrences: header, body, footer

The source row receives:

  • Outlinks: 3
  • Unique Outlinks: 1

Repeated navigation links are not collapsed in Outlinks. This is intentional: Outlinks measures occurrences, while Unique Outlinks measures destination coverage.

Unique Outlinks

Unique Outlinks is the number of distinct normalised internal target URLs linked from one source page.

The same target counts once regardless of:

  • how many anchors point to it;
  • where those anchors appear;
  • differences in removed fragments;
  • differences in removed tracking parameters;
  • query-parameter ordering.

The deduplication applies per source page. The same destination can be one Unique Outlink from each of many different source pages.

External Outlinks

External Outlinks applies the same qualifying-link rules as Outlinks, but counts occurrences whose normalised target host is outside the crawl scope.

For example, three links from one internal page to the same LinkedIn profile produce:

  • External Outlinks: 3
  • Unique External Outlinks: 1

External Outlinks is a property of the internal source page. The External Links table presents the relationship from the opposite direction, grouped by external target.

Unique External Outlinks

Unique External Outlinks is the number of distinct normalised external target URLs linked from one internal source page.

Different URLs on the same external domain remain distinct targets. This metric counts URLs, not domains.

https://external.example/article-a
https://external.example/article-b

The example contributes two Unique External Outlinks.

Inlinks

Inlinks is calculated for an internal target URL from stored internal link occurrences. Every qualifying occurrence pointing to the target counts, including repeated links from the same source page.

Suppose the crawler captures:

Source page Occurrences pointing to /contact/
Home 3
About 1
Services 2

The /contact/ row receives:

  • Inlinks: 6
  • Unique Inlinks: 3

Inlinks is updated as pages are processed. Its value can rise during a live crawl because later source pages can reveal more links to an already crawled URL.

Only occurrences captured during the current crawl contribute. Links from pages outside the crawl, pages not reached, pages blocked from rendering, or occurrences beyond collection limits are not known to the app.

Unique Inlinks

Unique Inlinks counts distinct internal source URLs that contain at least one qualifying link to the target. Each source URL counts once, regardless of how many links it contains to that target.

The source URL identity is normalised. It is the number of linking pages observed by this crawl, not the number of websites, domains, IP addresses or external backlinks.

Self-Links

A full URL link from a page to itself without a fragment can qualify as an internal link and contribute to both that page's Outlinks and Inlinks. A same-page fragment link is excluded.

This distinction allows a genuine self-referencing navigation or logo link to be represented while avoiding counts for in-page jump navigation.

External Links Table

The External Links table groups all qualifying external occurrences by normalised target URL. One row represents one external target URL, not one anchor and not one external domain.

Inlinks

The table's Inlinks value is the total number of captured external link occurrences pointing to that target. Repeated links from one source page count repeatedly.

The current External Links table does not have a Unique Inlinks column. Open URL Details to inspect the source occurrences and determine which internal pages supplied them.

Crawl Depth

External Crawl Depth is calculated as:

minimum crawl depth of a linking internal source page + 1

If the starting page at depth 0 links directly to an external URL, that external row has depth 1. If the first known link is on an internal page at depth 2, the external row has depth 3.

When several pages link to the same external target, the lowest calculated depth is shown.

Status Fields

Discovering an external link does not request it. Before a header check:

  • Status Code is 000;
  • Status is <none>;
  • Content Type is empty unless other crawl data happens to exist for that identity.

After Check headers, these fields describe the limited HTTP header request, not a rendered external-page crawl. See How the Crawler Works.

Outlinks in URL Details

The Outlinks tab in URL Details lists individual captured occurrences from the selected internal source URL. It can show:

  • target URL;
  • internal or external scope;
  • anchor text;
  • element and attribute;
  • rel values;
  • target attribute;
  • approximate page placement;
  • nearest detected heading;
  • nofollow, sponsored and ugc flags derived from rel tokens.

The tab includes both internal and external qualifying link occurrences. This is why its total normally corresponds to:

Outlinks + External Outlinks

The tab can display at most 2,000 captured occurrences for one URL. Summary counts can be higher.

Inlinks in URL Details

For an internal URL, the Inlinks tab lists internal source occurrences pointing to it. For a selected External Links row, it lists external link occurrences from crawled internal pages pointing to that external target.

Each row is an occurrence, so a source page can appear more than once.

Resources Are Not Outlinks

Resources represent files used to construct or run a page. Examples include:

  • <img src> and srcset candidates;
  • <script src>;
  • stylesheet, icon, manifest, preload and prefetch links;
  • video, audio, track, frame, embed and object sources;
  • browser performance resources.

A stylesheet or image referenced by a page contributes to Resources, not Outlinks. A PDF linked through an anchor can be an Outlink because it is a content destination, even though the PDF itself is fetched as a direct asset if it enters the same-host crawl queue.

The same resource can appear more than once when multiple elements or browser entries refer to it. URL Details preserves occurrences because element, attribute, placement and transfer information can differ.

Worked Example

Assume https://example.com/guide/ contains these rendered anchors:

<a href="/contact/">Contact</a>
<a href="/contact/

# form">Use the form</a>
<a href="/pricing/?utm_source=guide">Pricing</a>
<a href="https://partner.example/report.pdf">Partner report</a>
<a href="https://partner.example/report.pdf

# page=2">Report page 2</a>
<a href="

# contents">Contents</a>
<a href="mailto:hello@example.com">Email us</a>
<a>Menu toggle</a>

The resulting metrics are:

Metric Value Reason
A Tags 8 Every rendered <a> element is counted.
Outlinks 3 Two occurrences to Contact plus one to Pricing.
Unique Outlinks 2 Contact and Pricing are two internal destinations.
External Outlinks 2 Both partner-report anchors qualify.
Unique External Outlinks 1 Their fragments are removed, leaving one external destination.

The fragment-only link, email link and anchor without href do not contribute to either Outlinks metric.

Common Reasons Counts Differ

Link counts can differ from another crawler or a manual source-code search because LWF SEO Spider:

  • uses the rendered DOM rather than only downloaded HTML;
  • waits for a fixed render-settle period rather than interacting with the page;
  • applies exact-host scope;
  • removes fragments and common tracking parameters;
  • excludes non-HTTP schemes and static-resource anchor targets;
  • stores occurrences only from pages reached in the current crawl;
  • can see a different page because of cookies, location, User Agent, consent or anti-bot controls.

When investigating a discrepancy, compare A Tags, Outlinks and External Outlinks first, then open the source URL's Outlinks tab to inspect the captured occurrences.