Skip to Content

Orphan pages with no internal links

What Is This Issue

Orphan pages are web pages that have no internal links pointing to them from other pages on your website. This issue checks whether all your indexable pages are linked from at least one other internal page, making them discoverable by search engines and users.

A passing implementation requires:

  • Every important page has at least one inbound internal link
  • Pages are discoverable through your site’s navigation or content links
  • No important pages are only reachable through sitemaps or direct URLs
  • Internal linking structure provides clear paths between related content

Example: A newly published blog post that appears in your XML sitemap but isn’t linked from your blog listing page, homepage, or any other page on your site.

Why Is This Important

Orphan pages are important for SEO because they:

  • Reduce Crawlability: Search engines may not discover orphan pages during normal crawling
  • Weaken Indexability: Pages without internal links may be crawled less frequently or not at all
  • Dilute Link Equity: Orphan pages don’t receive internal link authority from other pages
  • Create Poor User Experience: Users cannot navigate to these pages through normal site browsing
  • Waste Crawl Budget: Search engines may spend crawl budget on sitemap URLs that aren’t properly integrated into the site structure

Orphan pages directly impact your SEO health score by making it harder for search engines to discover, crawl, and understand your content relationships. They may also indicate poor site architecture or content that’s been forgotten.

How XeoPix Detects This

XeoPix performs orphan page detection through the following logical steps:

  1. Page Discovery: XeoPix identifies all pages on your site through crawl seeds, sitemap URLs, and successfully fetched internal URLs.

  2. Link Extraction: For each page, XeoPix parses the raw HTML and extracts all internal links from <a href> attributes.

  3. URL Normalization: XeoPix normalizes all source and target URLs using canonical URL rules (removing fragments, resolving relative URLs, etc.).

  4. Inbound Link Counting: XeoPix builds an internal link graph and counts how many unique internal pages link to each target page.

  5. Orphan Identification: XeoPix flags pages as orphaned when:

    • The inbound internal link count is zero (SUGGESTION)
    • The page is only discoverable through sitemaps or seeds, not through internal links
  6. Context Tracking: XeoPix also records whether orphan pages:

    • Appear in your XML sitemap
    • Were discovered through redirect chains
    • May have incomplete link data due to crawl constraints

Note: XeoPix analyzes links in raw HTML only and does not execute JavaScript. Links generated only by JavaScript cannot be detected and won’t clear orphan status.

How To Fix

  1. Audit your pages: Identify which pages have no inbound internal links using crawl data or site audits.

  2. Add contextual links: Include links to orphan pages from relevant content, such as:

    • Blog posts related to the topic
    • Category or hub pages
    • Related product or service pages
    • Navigation menus or footer links (for important pages)
  3. Update sitemaps: Ensure orphan pages are at least included in your XML sitemap as a discovery fallback.

  4. Review site architecture: Check if orphan pages indicate poor site structure that needs reorganization.

  5. Link from high-authority pages: Add links from your homepage, main navigation, or top-performing pages to important orphan pages.

  6. Use related content modules: Implement “Related Posts” or “Related Products” sections that automatically link to relevant pages.

  7. Check after fixes: Re-crawl your site to confirm orphan pages now have inbound internal links.

What We Store

Storage Level

Page Level — This issue is evaluated for each individual page and its internal links.


Database Table / Prisma Model

PageInternalLink


Stored Fields

FieldTypeDescription
urlIdStringThe ID of the page being analyzed
targetUrlStringThe internal URL that is linked to
statusCodeInt?HTTP status code of the internal link (if crawled)
urlUrlThe source URL of the page containing the link

Detection Dependencies

  • The following data sources are required to evaluate this issue:
  • HTML Document — The crawler extracts all internal links from the page
  • HTTP Response — The crawler may optionally follow links to check their status
  • Internal Links — All same-domain links are identified and analyzed for nofollow attributes

Examples

Example 1: Simple Orphan Page

Problematic State (Fails): A blog post exists but has no internal links pointing to it:

  • Page /blog/new-post is in the sitemap
  • No other page on the site links to /blog/new-post

Corrected State (Passes): Add internal links to the page:

  • Link from the blog listing page: <a href="/blog/new-post">New Post</a>
  • Link from related blog posts
  • Add to main navigation or footer if important

Example 2: Orphan Page with Sitemap Only

Problematic State (Fails): A product page is only discoverable through the sitemap:

  • /products/special-item is in the XML sitemap
  • No internal links point to this product page

Corrected State (Passes): Integrate the page into the site structure:

  • Add to product category page
  • Link from homepage featured products section
  • Include in related products section on other product pages

Example 3: JavaScript Navigation

Problematic State (Fails): Links are generated only by JavaScript:

<div id="navigation"></div> <script> // Links created dynamically </script>

XeoPix cannot detect these links.

Corrected State (Passes): Add fallback HTML links:

<noscript> <a href="/page1">Page 1</a> <a href="/page2">Page 2</a> </noscript>

Unit Test

Test File

xeopix-crawling-v2/__tests__/seo-audit-checks/crawlBehaviour/issue-17-no-orphan-all.test.js

Purpose

This unit test validates that the runCrawlBehaviour() function correctly detects orphan pages — crawled pages that have no incoming internal links from other pages on the site.

Tested Function

runCrawlBehaviour() from toggleGroups/crawlBehaviour.js

Issue Information

  • Issue Number: 17
  • Issue Code: NO_ORPHAN_ALL
  • Toggle Group: crawlBehaviour

Test Scenarios

Positive Test Cases

  • Every crawled page has incoming internal links → no orphan page issues reported

Negative Test Cases

  • A crawled page has no incoming internal links (/contact is not linked from any page) → NO_ORPHAN_ALL issue created with the orphan page URL

Boundary Cases

None

Edge Cases

None

Expected Outcome

Pass

A NO_ORPHAN_ALL issue is not reported when every crawled page is referenced by at least one incoming internal link from another page.

Fail

A NO_ORPHAN_ALL issue is reported when a crawled page exists in visitedUrls but has no corresponding entry in the internalLinks map pointing to it.

Validation

  • Verifies that comparing internalLinks against visitedUrls correctly identifies orphan pages
  • Validates issue code and URL in the detected issue payload
  • Ensures pages with proper internal linking produce no false positives
  • xeopix-crawling-v2/toggleGroups/crawlBehaviour.js
  • xeopix-crawling-v2/issueCodes.js

Coverage Summary

  • 2 test cases (one positive, one negative)
  • Tests the core orphan page detection logic
  • Validates payload structure (issueCode, details.url)
  • Uses mocked API responses for sitemap fetching and data submission

References

Last updated on