Skip to content
← Tilbage til Learn
Site Architecture Info

Orphan pages with no internal links

Pages with no internal links are hard to discover and receive no internal authority. They quietly accumulate over years and waste content investment.

An orphan page is a page on your site that exists but has no internal link pointing at it. Search engines may find it via your sitemap or external links. They may not. Either way, the page receives zero internal PageRank — it’s hard to rank for anything competitive.

Orphans accumulate quietly: a campaign landing page that nobody linked from after the campaign ended, a blog post written by a freelancer who deleted the navigation hub, a product variant URL that was supposed to be canonicalized but wasn’t.

How to detect it

The detection is a join: every URL on the site minus every URL referenced by at least one <a href> from another page on the site.

# After a full crawl that produces:
#   urls.txt — every URL discovered
#   inlinks.txt — every (source, target) pair
# Orphans = URLs in urls.txt that never appear as target in inlinks.txt
comm -23 <(sort -u urls.txt) <(cut -f2 inlinks.txt | sort -u)

Real crawlers (the Serpwise Crawler, Screaming Frog, Sitebulb) join sitemap URLs + crawl-discovered URLs against internal link targets and report the difference.

In Google Search Console: pages in the Pages → Indexed report that have 0 referring pages in the “Top linking pages” view are likely orphans on your site (though external referrers can still link to them).

Decide first — should the page even exist?

For each orphan, three options:

  1. The page is valuable — link to it from a relevant hub, category, or content page. Done.
  2. The page is obsolete410 Gone or 301 to the closest live equivalent. Remove from the sitemap.
  3. The page is intentionally hidden — a thank-you page after a form submission, a legal page rarely linked from nav. Add noindex and remove from sitemap. Now it’s no longer an orphan, it’s hidden by design.

Don’t auto-link every orphan from the footer. A footer dump of 200 orphan links signals “low quality” to Google and dilutes the inlinks every footer link gets.

Universal HTML

<!-- on a relevant hub page, in real running prose -->
<p>
  When you're picking a tool, read our deeper write-up on
  <a href="/blog/picking-a-project-management-tool">how to pick a project management tool</a>.
</p>

Rules:

  • Link from a topically related page.
  • Use descriptive anchor text — the page’s primary keyword in natural prose, not “click here.”
  • At least one inlink. Two or three is much better. Five plus from authoritative pages and the orphan is no longer orphaned.

WordPress

Add internal links by editing posts directly. For bulk, use a tool like Link Whisper or Internal Link Juicer that suggests contextual link opportunities based on content similarity.

Audit hub pages — category archives, key pillar posts — for whether they actually link to the orphans. Often the orphans exist because the hub stopped getting updated.

Shopify

Two structural patterns:

  1. Every product should be in at least one collection. If a product has no collection, it’s likely an orphan.
  2. Every blog post should appear in the blog archive listing. If you’ve manually unpublished from the archive, it’s an orphan.

For old products that are gone but you don’t want to lose link equity, redirect with 301 to the closest live product or to the parent collection.

Next.js

For dynamic content, generate a hub page that lists everything:

// app/blog/page.tsx
export default async function BlogIndex() {
  const posts = await getAllPosts();
  return (
    <ul>
      {posts.map((p) => (
        <li key={p.slug}>
          <a href={`/blog/${p.slug}`}>{p.title}</a>
        </li>
      ))}
    </ul>
  );
}

A /blog, /products, /case-studies index page that exhaustively lists everything in that category solves the orphan problem for dynamic content. Make sure the indexer is crawlable (paginated if huge, but every URL eventually reachable from a hub).

XML sitemaps don’t solve orphans

A URL in the sitemap and not linked anywhere is still an orphan from a PageRank perspective. The sitemap tells Google the URL exists; internal links tell Google it matters. You need both.

Pitfalls

Don’t fix orphans by dumping them all into the footer. Footer link dumps dilute the inlinks and signal low quality. Link from contextually relevant pages.

Don’t fix orphans by adding them to a sitemap and calling it done. Sitemaps aid discovery; they don’t pass authority. The orphan still doesn’t rank.

Don’t ignore “low inlink” pages just because they have one or two. A page with one nav link from the footer is barely better than orphaned. The signal is contextual internal links — from related content — not just any link.

Don’t auto-generate “Related posts” widgets to fix orphans without checking quality. Mediocre related-content algorithms cluster pages that aren’t actually related and contaminate the contextual link signal. If you use a related-posts widget, make it good or don’t use it.

Fix at the edge with Serpwise

When orphan patterns come from sections of the site you don’t fully own — a hosted blog under /blog/, a help center on a vendor — adding contextual internal links to thousands of orphans through the upstream CMS is slow.

Serpwise can inject <a> links at the edge based on URL patterns and on-page content: “on every /products/* URL, inject three contextual links to related products based on category” — patched into the response before it leaves the edge. The orphans get inlinks; the upstream template fix happens on its normal schedule.

See pricing or run a free AI visibility audit.

Fra diagnose til live rettelse

Find issue'et. Få rettelsen live.

Brug Learn til at forstå problemet, og kør derefter Serpwise på dit eget site for at se, hvad der kan rettes og komme live.