What Are Orphan Pages and How to Find Them
Basics4 minInnovialabs editorial team
In short
An orphan page is a page that no internal link on your site points to. Search engines find it rarely and treat it as unimportant; you find orphans by comparing URL lists from the sitemap, a crawler and analytics.
What an orphan page is
An orphan page is a page that exists and loads, but no other page on your site links to it. The only ways in are a direct URL, the sitemap or an external source.
Why that is a problem:
- Crawlers struggle to find it. Search engines mostly discover pages by following links. Without links, only the sitemap is left, and a sitemap is a hint, not a guarantee.
- It is recrawled rarely. Changes on the page take a long time to reach the index.
- It receives no internal weight. Internal links signal which pages matter. A page with none looks unimportant.
- Visitors cannot find it either. There is no path to it from the menu or other sections.
Where orphans come from: a section removed from the menu while its pages stayed live; ad landing pages; old pages after a redesign; products dropped from categories; broken pagination; pages a CMS generates on its own.
How to find them, step by step
The idea is simple: collect URL lists from several sources and find the ones that appear elsewhere but are missing from the crawl.
Step 1. Crawl the site
Run Screaming Frog, Sitebulb or a similar tool from the homepage. A crawler follows links just like a search bot, so orphans will not appear in its results. Export every URL that returned 200.
Step 2. Collect URLs from the sitemap
Export all addresses from sitemap.xml. Many crawlers can load the sitemap separately and directly list URLs that are in the sitemap but were not reached through links.
Step 3. Add analytics and webmaster data
- From Google Analytics or Yandex Metrica — landing pages over a long period.
- From Google Search Console — pages from the performance and indexing reports.
- From Yandex Webmaster — pages in search.
- If you have access, server logs — which URLs bots request.
Step 4. Compare the lists
Normalize the URLs: one protocol, consistent trailing slash, no UTM parameters. Then find addresses present in the sitemap, analytics or logs but absent from the crawl. These are your orphan candidates.
For a small site a spreadsheet with a lookup function is enough. For a large one a short script is easier:
crawl = set(open("crawl.txt").read().split())
other = set(open("sitemap.txt").read().split()) | set(open("analytics.txt").read().split())
orphans = sorted(other - crawl)
print("\n".join(orphans))
Step 5. Check each candidate by hand
Not every result is a true orphan. Some may redirect or return 404, others are parameter duplicates. Check the status code and the content.
What to do with them
| Page | Action |
|---|---|
| Useful, has traffic or demand | Add internal links from categories, menus, related posts |
| Outdated, but a replacement exists | 301-redirect to the current page |
| Not needed, no links or traffic | Delete it (404 or 410) and remove it from the sitemap |
| Needed only for ads | Keep it, add noindex and remove it from the sitemap |
When adding links, follow the site's logic: the page should be reachable from the section where a visitor expects it, not from a random footer block.
How to prevent orphans
- Review internal links whenever you remove a section or change the menu.
- Generate the sitemap automatically from CMS data and compare it with a crawl at least once a quarter.
- Use related-content blocks and breadcrumbs in blogs and catalogs.
- After a redesign or migration, always compare the old and new URL lists.