SEO Fix Agent
← All articles
Technical SEO9 min read

Orphan Pages: Why They Hurt SEO, How to Find Them, and What to Do With Each One

An orphan page has no internal links pointing at it. Why that costs you, the two lists you need to find them, and a decision for each one you find.


An orphan page is a URL on your site that no other page on your site links to. It exists, it may be in your sitemap, it may even rank, but the only way to reach it is to already know the address. That definition sounds like a curiosity. In practice orphans are one of the most common structural problems a crawl turns up, they are almost always created by accident, and the fix for each one is a small decision that nobody has been asked to make.

This article covers why orphans cost you, how to find them properly (which needs more than one data source), what to do with each kind, and the four mechanisms that keep generating new ones.

Why an unlinked page is a problem

Search engines discover pages three ways: by following links, by reading sitemaps, and from external references. An orphan is discoverable only by the second and third. That has consequences.

Discovery is slower and less reliable. Sitemaps are a hint, not a queue. Google documents that it uses them to learn about URLs, not as a promise to crawl them. A page reachable only through the sitemap is crawled when the sitemap is next processed and the URL is judged worth fetching, which for a large site can mean weeks, and for a low-priority URL can mean never.

No internal link means no internal signal. The anchor text pointing at a page is one of the clearest statements a site can make about what the page is about. The number of pages linking to it is one of the clearest statements about how important it is. An orphan says nothing on either count. It is a page the site itself does not vouch for.

PageRank does not reach it. Whatever authority your site has flows through links. A page nothing links to receives none of it, regardless of how strong the domain is. This is the mechanism behind the common observation that an orphaned page which ranked fine when it was linked from the homepage slides after a redesign removes the link, even though the page did not change.

Users cannot find it either. The SEO framing hides the plainer point: if the site's navigation, category pages and related-content modules do not lead to a page, most visitors will never see it. Traffic to orphans is almost entirely from search or from old external links, and both erode.

The one thing orphans do not do is trigger a penalty. There is no "orphan page" ranking factor. The cost is opportunity cost, plus a slow leak of pages that quietly stop being crawled, which on a site with thousands of them adds up to a section of the site that search engines have effectively forgotten.

Finding them needs two lists

An orphan is defined by absence, and you cannot see an absence in a single dataset. You need a list of the pages that exist, and a list of the pages that are linked, and the orphans are the difference.

The linked list comes from a crawl. A crawler starting at your homepage and following every internal link produces exactly the set of pages that are reachable by links. Anything not in that set is, by definition, an orphan. This is the one list you cannot get any other way.

The "exists" list comes from everywhere else, and the more sources you combine, the more orphans you find:

Source What it gives you What it misses
XML sitemap Every URL you intended to publish Pages the CMS publishes but never added to the sitemap
Server logs Every URL a crawler or user actually requested Pages nobody has requested recently
Search Console (Pages report, Performance export) Every URL Google knows about and has shown Pages Google never found
Analytics Every URL that received a visit Pages with zero traffic — often the ones you most want to know about
Database / CMS export Every URL that exists, full stop Nothing, if you can get it

The CMS export is the gold standard and the one people skip. A SELECT slug FROM posts WHERE status = 'published' against your own database, turned into URLs, is a complete list of what exists. Everything else is a proxy.

The procedure:

  1. Crawl the site from the homepage, following links only. Do not seed the crawler with the sitemap, or it will "find" the orphans and report them as reached.
  2. Build the exists list from as many sources as you have. Normalise both lists the same way: strip fragments, decide on trailing slashes, lowercase the host, drop tracking parameters.
  3. Orphans = exists − crawled.
  4. Split the result by HTTP status. A URL in the sitemap that returns 404 is not an orphan, it is a dead sitemap entry. A 301 is a redirect you should update at the source. Only 200s are orphans.

If you use Screaming Frog, this is the Orphan Pages report under Crawl Analysis, and it only populates when you have connected the sitemap and, ideally, GA and GSC as extra sources. A crawl on its own cannot report orphans because a crawl on its own cannot know what it did not reach. The site crawl on this site does the same thing with the sitemap as the exists list: it audits the sitemap URLs, follows internal links from every page it visits, and reports any sitemap URL with zero inbound internal links as an orphan, alongside click depth from the root and pages that are reachable but only four or more clicks down.

A decision for each one

An orphan list is not a to-do list of pages to link. Some orphans should be linked, some should be removed, and some are fine. Walk each one through this.

Is it a page you want indexed and ranking?

Yes → link to it. Not from the footer, not from a "sitemap" page nobody visits. From the page a reader would be on immediately before they want this one: the parent category, the related article, the product it accessories. One good contextual link from a relevant page is worth more than a slot in a 200-link footer, both to search engines and to the reader. If you cannot think of a page it belongs under, that is information: it may be that the page does not belong on the site.

No → then why does it return 200? The honest answers are:

  • It is a landing page for a campaign, an email or an ad. Fine. Add <meta name="robots" content="noindex"> so it stops competing with the pages you do want ranking, and remove it from the sitemap. It is not an orphan, it is a page with a private audience, and marking it as such stops every future crawl from flagging it.
  • It is old and superseded. Redirect it (301) to the page that replaced it, or to the closest relevant parent. Do not redirect it to the homepage; that is treated as a soft 404.
  • It is a duplicate: a paginated variant, a print version, a URL with a stray parameter. Canonicalise it to the primary version and remove it from the sitemap.
  • It is dead: an event that happened, a product that was discontinued with no successor. Let it 410 (or 404) and remove it from the sitemap. Deleting content that has no audience is not a loss.
  • It is a system page the CMS generated: an author archive with one post, a tag page with two, an empty category. Noindex it, or configure the CMS to stop creating them.

The pattern: every orphan resolves to one of link it, noindex it, redirect it or remove it. There is no fifth option where it stays as it is, because "as it is" is the state that generated the finding.

How orphans get made

Fixing the existing list is the smaller job. The larger one is stopping the mechanisms that make more, and there are four that account for nearly all of them.

Redesigns and navigation changes. Every time the main navigation is simplified, the pages that were only reachable from the removed items become orphans. The new design is tested for how it looks and whether the links it has work; nobody tests for which links it used to have. The fix is a crawl-diff before and after: crawl the old site, crawl the new one, and compare the reached sets.

Pagination and infinite scroll. A blog index that shows ten posts and loads more on scroll, with no <a href> to page two, has orphaned every post older than the tenth. The crawler cannot scroll. Any "load more" pattern needs a real link to the next page in the HTML, even if JavaScript replaces its behaviour for users.

Content published outside the taxonomy. A post with no category, a product in no collection, a doc page not in the sidebar tree. The CMS happily publishes it and it appears in the sitemap and nowhere else. The fix is a publishing rule: nothing goes live without a parent.

Faceted and parameterised URLs. Filter pages and sort orders that are linked from JavaScript-driven controls rather than from anchors. These are usually pages you do not want indexed, and the right answer is to canonicalise or noindex them rather than link them, but they show up on orphan reports constantly because the sitemap plugin included them.

A recurring monthly crawl catches all four early. An orphan that is found the week it was created gets fixed by the person who created it, while they still remember why. One found a year later has to be re-investigated from scratch.

Related structural findings

Orphans are the most extreme case of a more general measurement: how many clicks from the homepage a page is, and how many pages link to it. A page with exactly one inbound link, from a page that itself has one inbound link, is not an orphan but is nearly as invisible. Any crawl that can find orphans can also give you click depth (pages more than three clicks from the root are worth reviewing for the same reasons) and the inbound link distribution (which pages the site is implicitly telling search engines are important, versus which pages you meant to be important).

Two related articles here: heading structure, because the same crawl that finds orphans is where you check heading hygiene across a whole site, and redirect chains, because fixing orphans by redirecting them is where most new chains are born. If you want the checklist that puts all of this in order, the technical SEO checklist has internal linking as one of its sections.

Summary

  • An orphan is a page nothing on your site links to. It can be crawled via the sitemap, but discovery is slower, it receives no internal authority, and users cannot find it.
  • You need two lists to find them: the pages a link-following crawl reaches, and the pages that exist. The difference, filtered to 200s, is your orphans.
  • Each one is either linked, noindexed, redirected or removed. Nothing stays as it is.
  • Most orphans are made by redesigns, scroll-loaded pagination, untaxonomised content and parameterised URLs. A recurring crawl catches them while they are cheap.
#orphan-pages#internal-linking#crawling#site-architecture#technical-seo

Audit your page, then ship the fix

SEO Fix Agent runs 36 weighted technical, content and AI-search checks on a page, then compiles every finding into a severity-ordered prompt your coding agent can execute. 50 free credits, no card.

Start free — 50 credits

Keep reading