London Web Factory

LWF SEO Web Spider: Result Variables and Column Glossary

This reference explains where each value comes from, how derived values are calculated, and what the value does and does not prove. The current Internal Links table contains seven column groups in this order: Page, Content, Structure, Links, Directives, Response and Technical. For the end-to-end collection process, see How the Crawler Works. Link counting has additional examples in How Link Metrics Are Calculated.

General Conventions

Rendered DOM

HTML values are normally extracted after Chromium has loaded the page and JavaScript has had a short time to render. They can differ from the original HTML returned by the server.

Text cleaning

Displayed text is trimmed and consecutive whitespace is collapsed to one space. Character lengths count Unicode characters after that cleaning step.

URL identity

URLs used for crawl and link identity are resolved, limited to HTTP or HTTPS, stripped of fragments and common tracking parameters, and given consistently ordered query parameters.

Empty values

A blank cell or - generally means the value was absent or unavailable. It does not always mean the page explicitly declared an empty value.

000

000 is used only when the app has no valid HTTP response code for an external header check. It is not an HTTP status code and does not mean that the server returned zero.

Internal Links: Page

The Page group identifies the requested crawl resource and summarises its type, response and practical indexability classification.

Address

The normalised URL represented by the crawl row. For a redirect, this remains the requested address so the redirecting URL has its own result row; the destination is shown in Redirect URL and URL Details.

Fragments and common tracking parameters are removed before crawl identity is stored. The value can therefore differ from the exact spelling of a link in the source HTML.

Content Type

The MIME content type observed for the row. For a rendered document, the app prefers the document type reported by Chromium and can fall back to the HTTP Content-Type header. For a direct asset, the value comes from response headers.

Examples include text/html, image/jpeg, application/pdf, text/css and application/javascript. Parameters such as charset=UTF-8 can be included when supplied.

Content Type describes the response seen by this crawl. It does not guarantee that the body is valid for that MIME type.

Language

The app first reads the rendered document's <html lang> value. If it is absent, it uses the first value from the HTTP Content-Language response header where available.

Example: en-GB.

This is a declared language, not automatic language detection. An empty value means no supported declaration was captured.

Status Code

The HTTP response status observed for the requested URL. Examples include 200, 301, 302, 404, 410 and 500.

For a redirecting row, this is the first redirect status, while Redirect Status Codes records the observed chain and final response. A network failure can leave the field empty because DNS, TLS and connection failures occur before an HTTP response exists.

Status

A human-readable interpretation of Status Code. Known values include OK, Moved Permanently, Found, Not Found, Gone, Too Many Requests and Internal Server Error.

For less common official codes, the app uses the status class where necessary, such as Redirect, Client Error or Server Error. Status is an interpretation; Status Code is the underlying observation.

Indexability

A two-value app classification:

  • Indexable means the app did not detect one of its supported exclusion conditions.
  • Non-Indexable means it detected a redirect, error, robots block, noindex directive or canonical to another URL.

This is a diagnostic assessment, not confirmation of a search engine's index. Search engines can make different canonical, duplication, rendering or quality decisions.

Indexability Status

The first applicable reason selected in this order:

Value Rule used by the app
Redirected Status is in the 3xx range.
Client Error Status is in the 4xx range.
Server Error Status is 500 or greater.
Error A crawl or extraction error was recorded.
Blocked The URL matched a disallow rule in the fetched robots.txt policy.
Noindex Meta robots or X-Robots-Tag contains the token noindex or none.
Canonicalised One valid canonical points to a different normalised URL.
Indexable None of the supported non-indexable conditions was detected.

Because the rules are ordered, a redirected URL is labelled Redirected even if another directive is also present.

Internal Links: Content

The Content group measures the main text and descriptive elements extracted from the rendered page.

Size (Bytes)

The size of the individual response body, not the combined weight of the page and all of its resources.

For a rendered page, the app prefers Chromium's decoded body size, then encoded body size. If those values are unavailable, it falls back to Content-Length. For a directly requested asset, Content-Length may be the only available size.

Decoded and encoded sizes can differ because of compression. Cached responses, streamed responses and missing headers can also leave this value empty or make it differ from a browser developer-tools total.

Word Count

The number of whitespace-separated words found while walking text nodes in the rendered document body. Repeated whitespace is collapsed. Text inside script, style, noscript, svg, canvas and template is excluded.

Visible navigation, footer, cookie-banner and interface text is not automatically removed. The count is therefore rendered page text, not a linguistic or editorial word count and not necessarily the article-only total.

Title

The cleaned value of the rendered document's document.title, normally derived from the HTML <title> element.

If no title is available, the value is empty. The crawler records the result after rendering, so JavaScript can alter it.

Title Length

The number of Unicode characters in the cleaned Title. Whitespace collapsed during extraction is counted as one character.

This is a character count, not a search-result pixel-width prediction. Search engines can rewrite titles and use different fonts and display widths.

Meta Description

The cleaned content value from the first rendered meta element whose name or property equals description, compared case-insensitively.

Example source:

<meta name="description" content="Example description">

The displayed value is Example description. An empty value means no populated supported element was captured.

Meta Description Length

The number of Unicode characters in the cleaned Meta Description.

This is not a pixel measurement and does not predict whether a search engine will display or truncate the description.

H1

The cleaned rendered text of the first <h1> element in document order. The app uses rendered inner text where available and falls back to text content.

If the page has several H1 elements, only the first text is displayed here. H1 Tags records the total number.

H1 Length

The number of Unicode characters in the cleaned first H1 value. It is 0 when no first H1 text was captured.

Internal Links: Structure

Structure columns are raw element counts from the rendered DOM. They describe markup quantity, not whether the structure is semantically correct.

H1 Tags

The number of rendered <h1> elements. This count includes empty and visually hidden H1 elements if they remain in the DOM.

H2 Tags

The number of rendered <h2> elements.

H3 Tags

The number of rendered <h3> elements.

H4 Tags

The number of rendered <h4> elements.

H5 Tags

The number of rendered <h5> elements.

H6 Tags

The number of rendered <h6> elements.

The H1-H6 counts do not determine whether headings form a logical hierarchy. Use Page Analysis and its Document Outline to inspect order and text.

P Tags

The number of rendered <p> elements, including empty paragraphs and paragraphs used for interface content.

LI Tags

The number of rendered <li> elements. This includes list items in ordered lists, unordered lists, menus and any custom structure that uses an li element.

A Tags

The number of all rendered <a> elements, whether or not they contain a usable href.

This raw HTML count includes email links, telephone links, same-page fragment links, JavaScript links and anchors without destinations. It is intentionally different from Outlinks. See [A Tags compared with Outlinks](08-link-metrics.md

a-tags).

TABLE Tags

The number of rendered <table> elements. It does not count individual rows or cells and does not determine whether a table is used appropriately.

IMG Tags

The number of rendered <img> elements available through document.images. CSS background images are not <img> elements and are not counted here.

IMG Alt

The number of rendered images that have an alt attribute containing non-whitespace text.

<img src="house.jpg" alt="Victorian house">

The crawler measures presence and content, not whether the alternative text is useful or accurate.

IMG Empty Alt

The number of rendered images where the alt attribute exists but is empty or whitespace-only.

<img src="decoration.svg" alt="">

Empty alt text can be correct for a decorative image, so this count is not automatically an error count.

IMG No Alt

The number of rendered images where the alt attribute is absent.

<img src="team.jpg">

For a normally extracted page, the following relationship should hold:

IMG Alt + IMG Empty Alt + IMG No Alt = IMG Tags

Internal Links: Links

The Links group separates occurrence counts from distinct URL counts. Only qualifying HTTP or HTTPS content links from rendered <a href> elements contribute.

Inlinks

The total number of captured internal link occurrences pointing to this URL from crawled internal pages. Repeated links from one source page count repeatedly.

If Home links to Contact in the header, body and footer, Home contributes three Inlinks to Contact.

Inlinks is recalculated from stored occurrences as source pages complete, so the value can increase during a crawl. It is not an internet-wide backlink count.

Unique Inlinks

The number of distinct normalised internal source URLs containing at least one qualifying link to this URL.

A source page contributes at most one Unique Inlink even when it links to the destination many times. This answers "how many crawled internal pages link here?" rather than "how many links point here?"

Outlinks

The total number of qualifying internal link occurrences from this page. Repeated anchors to the same target each count.

Qualifying links resolve to HTTP or HTTPS content destinations. Empty links, non-HTTP schemes, same-page fragments and anchor targets that clearly identify static/media assets are excluded. Cross-page fragments count after the fragment is removed.

Outlinks does not include external destinations; those contribute to External Outlinks. It also does not include embedded Resources.

Unique Outlinks

The number of distinct normalised internal target URLs linked from this page.

Fragments and common tracking parameters do not create separate unique targets. Multiple occurrences to one target produce multiple Outlinks but one Unique Outlink.

External Outlinks

The total number of qualifying link occurrences from this page to targets whose host differs from the crawl scope host.

It uses the same link exclusions as Outlinks. Subdomains and different explicit ports are external. The value is an occurrence count, so repeated links to the same external URL count repeatedly.

Unique External Outlinks

The number of distinct normalised external target URLs linked from this page. It counts URLs, not external domains.

For example, links to two different articles on the same external website contribute two Unique External Outlinks.

Crawl Depth

The discovery distance from the crawl starting URL:

  • the start URL has depth 0;
  • a URL first queued from the start page normally has depth 1;
  • a URL first queued from a depth-1 page normally has depth 2.

The queue keeps one entry per normalised URL and retains its first accepted discovery depth. Because discovery uses a breadth-first queue, this normally represents the shortest observed link path. It is not a link score or authority calculation.

Internal Links: Directives

The Directives group combines raw indexing signals with a simplified canonical interpretation.

Meta Robots Tag

The cleaned content value from the first rendered meta element whose name or property is robots, compared case-insensitively.

Example:

<meta name="robots" content="noindex, follow">

The displayed value is noindex, follow. The app checks tokenised content for noindex or none when deriving Indexability.

X-Robots-Tag

The value of the HTTP X-Robots-Tag response header. Multiple supplied values can be joined for display.

This directive is available for non-HTML files as well as HTML responses. The app checks it for noindex or none when deriving Indexability.

Meta Refresh

The cleaned raw content value of the first rendered element matching:

<meta http-equiv="refresh" content="5;url=/new-page/">

The displayed value retains the delay and destination text as supplied. It is not included in the HTTP redirect chain because a meta refresh is a document instruction rather than an HTTP redirect response.

Canonical Link

The URL from the first rendered <link rel="canonical"> element. Relative values are resolved against the document base URL, and fragments are removed.

If several canonical elements exist, this field shows the first interpretable value while Canonical Status reports Multiple.

Canonical Status

A simplified canonical classification:

Value Calculation
Self-referencing Exactly one valid canonical normalises to the row Address.
Canonicalised Exactly one valid canonical normalises to another URL.
Missing No canonical element was captured.
Multiple More than one canonical element was captured.
Invalid A canonical exists but cannot be resolved to a valid HTTP or HTTPS URL.

Normalisation removes fragments and common tracking parameters before self-reference comparison. The app does not fetch the canonical target solely to validate its response or indexability.

Internal Links: Response

The Response group records timing, headers and redirects observed during this crawl.

Response Time

The navigation or request duration in milliseconds.

For a rendered page, the app prefers Chromium's navigation performance duration and falls back to elapsed wall-clock navigation time. For a direct asset, it uses elapsed request time until response headers or an error are received.

This is not pure server Time to First Byte. It can include redirects, transfer, browser processing and page load activity, so it should be used as a comparative crawl diagnostic rather than a laboratory performance score.

Last Modified

The value captured from the HTTP Last-Modified response header where supplied. It is empty when the server omits the header.

This is server-provided metadata. The app does not verify that it accurately reflects the page's last editorial change.

Redirect URL

The first destination observed for a redirecting requested URL. For example:

/old-page -> 301 -> /new-page

Redirect URL for /old-page is /new-page after URL resolution and normalisation. Open Redirects in URL Details to inspect more than one hop.

Redirect Type

A classification based on the first captured HTTP redirect status:

  • Permanent for 301 or 308;
  • Temporary for 302, 303 or 307;
  • blank when no supported HTTP redirect type was captured.

This field does not classify meta refresh or JavaScript navigation as an HTTP redirect type.

Redirect Status Codes

The captured sequence of HTTP redirect statuses, normally followed by the final response status where available. Values are separated by >.

Example:

301 > 302 > 200

The row's Status Code remains the first redirect status. This field shows the broader response path.

HTTP Version

The protocol reported by Chromium's navigation performance entry. Common normalised values are HTTP/1.1, HTTP/2 and HTTP/3.

The value can be empty when the browser does not expose it, when timing information is restricted, or for a direct asset row that was not rendered as a document.

Internal Links: Technical

The Technical group supports duplicate investigation, exact URL handling and crawl auditing.

Content Hash

An eight-character hexadecimal FNV-1a hash calculated from cleaned rendered text nodes used by the crawl extractor. Eligible text segments are joined logically with a space; case and punctuation remain significant.

Pages with the same captured and normalised text should produce the same hash within a crawl. A matching hash is a useful exact-text duplicate indicator, but it does not prove that HTML, links, media, metadata or visual presentation are identical.

Non-HTML resources and pages where extraction failed can have an empty hash.

URL Encoded Address

The Address passed through standard URI encoding so unsafe characters are percent-encoded while URL-reserved characters remain meaningful.

This is useful for diagnostics and export. It is not a second crawl identity and is not an SEO score.

Crawl Timestamp

The time at which the row was built, stored as an ISO 8601 timestamp. The value includes timezone information, normally the Z suffix for UTC.

It records this crawl observation, not the publication or modification date of the page.

External Links Columns

The External Links table groups qualifying external link occurrences by normalised target URL. Discovering a target does not automatically request it.

Row

The sequential display position in the current filtered and sorted result set. Row is presentation data, not a persistent URL identifier.

Address

The normalised external HTTP or HTTPS target URL. One row represents one target URL, not one occurrence and not one domain.

Content Type

The Content-Type response header returned by Check headers, where available. It is usually blank before a check.

The value describes the limited header response and does not mean the external body was rendered or fully downloaded.

Status Code

An official HTTP status from 100 through 599 returned by the external header request. The app starts with HEAD and retries with GET only for 405 or 501.

000 means no valid HTTP response code is available. Typical reasons include not yet checked, DNS failure, TLS failure, timeout, blocked connection or another error before a response arrived.

For an external redirect, the redirect response itself, such as 301 or 302, is retained; the app does not crawl through the external site to replace it with the destination's final status.

Status

The readable interpretation of Status Code. Examples include OK, Moved Permanently, Found, Forbidden and Not Found.

Before checking, it is <none>. A transport failure can display Error. If a network API exposes a non-standard numeric value, the public status remains 000 and URL Details identifies it as a non-standard response rather than pretending it is an HTTP code.

Crawl Depth

The lowest depth of any crawled internal source page linking to the external target, plus one.

External depth = minimum linking source depth + 1

A direct external link from the start page therefore has depth 1.

Inlinks

The total number of captured external link occurrences from crawled internal pages to this target. Repeated links from one page count repeatedly.

This is not a web-wide backlink figure and is not deduplicated by source page. Open the Inlinks tab in URL Details to inspect the occurrences.

Page Analysis Variables

Page Analysis is separate from a site crawl. It inspects the page currently open in the persistent Browser tab after a short settle period. While its sidebar remains open, completed browser navigations and URL-changing in-page navigations trigger a fresh analysis automatically.

Title and Title characters

Title is the cleaned rendered document.title. Title characters is its Unicode character count after whitespace cleaning.

Meta description and Meta description characters

The content of the first rendered description meta element and its Unicode character count.

H1

H1 is the cleaned text of the first rendered H1.

Element counts

Raw counts of rendered elements in the current DOM:

Count Element included
H1 <h1>
H2 <h2>
H3 <h3>
H4 <h4>
H5 <h5>
H6 <h6>
P <p>
LI <li>
A Every <a>, including anchors without href.
TD <td> data cells; <th> header cells are not included.

These are element counts, not counts of populated or visible elements. JavaScript additions and removals made before analysis affect the totals.

Words

The whitespace-separated count of rendered body text after excluding text inside script, style, noscript, SVG, canvas and template elements. It includes stop words and visible interface text.

Words after stop-word filtering

The number of tokens used for phrase analysis after the app:

  1. converts text to lowercase;
  2. replaces punctuation other than apostrophes and hyphens with spaces;
  3. trims leading and trailing hyphens;
  4. removes one-character tokens;
  5. removes words in the app's built-in English stop-word list.

This is a keyword-analysis token count, not the crawl table's Word Count.

Path

The browser page's URL pathname. The query string and fragment are not shown in this field.

Images

The number of image entries returned from the rendered document.images collection, up to the Page Analysis collection limit of 300.

Missing alt and Empty alt

Missing alt counts returned images with no alt attribute. Empty alt counts returned images with an alt attribute that is empty or whitespace-only.

Load

The rounded navigation duration in milliseconds reported by Chromium for the currently loaded browser page. It is not a Core Web Vital and not pure server response time.

Content type

The rendered document's document.contentType value.

Canonical

The resolved href of the first rendered canonical link element. Page Analysis does not assign the Canonical Status classification shown in crawl results.

Robots meta

The cleaned content of the first rendered robots meta element. It does not include X-Robots-Tag, which is an HTTP header rather than a DOM element.

First paragraph

The cleaned text of the first rendered <p> element in document order that contains non-empty text. It may be interface, introductory or cookie text if that is the first populated paragraph in the DOM.

Document outline

Up to 300 non-empty rendered H1-H6 elements are extracted in document order, including each tag name and cleaned text. The current sidebar displays the first 80. Paragraphs are not included in the outline.

The outline helps inspect heading order but does not itself determine accessibility or document conformance.

Top words

The most frequent individual tokens after stop-word filtering. Results are ordered by count descending and alphabetically when counts tie.

Top 2-word and Top 3-word phrases

Counts of adjacent two-token and three-token sequences in the filtered token stream. Removing stop words can make words adjacent for phrase counting even when a stop word appeared between them in the original sentence.

The extractor calculates up to 25 phrases per length; the current sidebar displays the first 10. Four-word and five-word phrase data is also calculated internally but is not currently shown.

Links list

Up to 500 rendered <a href> elements are extracted and the current sidebar displays the first 80. Each item labels cleaned Anchor Text, resolved Href, and the optional Title attribute.

Unlike crawl Outlinks, this inspection list does not apply the content-link exclusion algorithm. It can therefore include fragment, mail, telephone or JavaScript destinations.

Images list

Up to 300 rendered images are extracted and the current sidebar displays the first 80. Each item shows:

  • Alt: populated alt text, Missing alt text, or Empty alt text;
  • Src: the current or resolved image source URL;
  • Title: the image title attribute when present.

CSS background images are not part of document.images and are not listed.

Site files

Page Analysis requests /robots.txt and /sitemap.xml at the analysed page's origin. Redirects are followed, each request has a ten-second timeout, and text previews are limited to 80,000 characters.

Found means the request returned a successful HTTP status. It does not validate the syntax or completeness of the file.

URL Details Variables

URL Details combines the selected summary row with occurrence, redirect and header records from SQLite.

Final URL

For an external header check, the resolved destination recorded from the response or redirect. Internal redirect rows normally use Redirect URL and the Redirects tab for the same concept.

Raw Status Code

A non-standard numeric response value retained for diagnostics when it falls outside the official 100 to 599 HTTP range. The public Status Code remains 000.

Robots.txt Allowed

Yes when no matching disallow rule won, and No when the selected robots.txt rule disallowed the URL. This reports the app's parser result for its configured User Agent.

Robots.txt Rule

The most specific matching Allow or Disallow rule used for Robots.txt Allowed. Empty means no matching rule was retained.

Robots.txt URL

The origin-level robots.txt URL used for the evaluation.

Checked At

The ISO timestamp at which an external header check completed. It is empty before a check.

Error

The cleaned crawl, extraction or external-request error recorded for the selected URL. A transport error can exist without an HTTP Status Code because no HTTP response was received.

Source URL

In an Inlinks occurrence, the normalised internal URL where the link was captured.

Source Title

The stored title of the source URL, where that source produced a crawl row and a title was captured.

Target URL

In an Outlinks or Resources occurrence, the resolved and normalised destination.

Text / Alt

The occurrence label. The interface prefers captured anchor text, then image alt text, then title text. Captured detail text is cleaned and limited to 160 characters.

Element

The lowercase HTML tag associated with the occurrence, such as a, img, script or link. Browser-only performance resources can use resource.

Attribute

The attribute that supplied the target, such as href, src, srcset, poster, data or performance.

Placement

An approximate DOM context based on the nearest recognised landmark: nav, header, main, footer, aside, article, section or a mapped ARIA role. body is used when no supported landmark is found.

Placement is a convenience label, not a complete CSS selector or accessibility-tree calculation.

Nearest Heading

A nearby heading selected for context. The extractor first looks for a heading in the closest major container, then searches a limited number of preceding siblings and ancestors.

It is a heuristic and may not be the semantic heading a human would associate with the link or resource.

Rel

The captured relationship text from the element, such as nofollow, sponsored, ugc, noopener or noreferrer.

The nofollow, sponsored and ugc flags are set when those exact lowercase tokens occur in the cleaned rel value.

Scope

Internal or External according to host comparison at extraction time. Different subdomains and explicit ports are external.

Initiator

For a browser performance resource, Chromium's initiator type, such as img, script, css or another browser-reported category. It can be empty for a DOM-derived occurrence.

Transfer Size

The browser-reported transfer size in bytes for a resource performance occurrence. It can be zero because of caching, browser privacy restrictions, cross-origin timing restrictions or missing performance data.

Redirect hop

One observed redirect step containing status, source URL and destination URL. Redirect response headers are associated with their hop number.

Response Headers

Header names and values captured for the selected response. Redirect response headers are shown separately by hop. Headers can be absent after network failures or when the relevant request path did not expose them.

Count and Detail Limits

The app limits very large detail payloads:

Area Current limit
Stored rendered-page occurrence payload 10,000 combined returned occurrences per source page
Rows returned by one URL Details occurrence tab 2,000
Page Analysis outline entries 300
Page Analysis links 500
Page Analysis images 300

Where a detail tab is truncated, the interface reports how many rows are shown. Summary values are calculated independently where possible, but occurrence-derived totals can only use occurrences the crawler captured.