An orphan page is a page on your site that no other page links to. Google discovers most URLs by following links, so an orphan is either never found ("URL is unknown to Google") or found through the sitemap and then ignored because nothing suggests it matters. The fix is simple: link to it from relevant, indexed pages, or decide it should not exist and remove it.
Finding orphans is the harder half, because a normal site crawl follows links and therefore cannot see them by definition.
Why orphan pages struggle to get indexed
Google's documentation describes link following as the main way it discovers new pages. Take the links away and three things happen:
- No discovery path. Unless the URL is in a sitemap or linked from another site, Googlebot has no way to learn it exists.
- No priority. Google decides what to crawl from a long list of known URLs. Internal links are a strong hint about which ones you care about. A sitemap-only URL has the weakest possible case.
- No context. Anchor text and the linking page's topic help Google understand a page. An orphan arrives with none of that.
So even when an orphan does get crawled, it is a common candidate for "Crawled - currently not indexed". More on that state in crawled, currently not indexed.
How pages become orphans
Almost nobody creates an orphan on purpose. They appear as side effects:
| Cause | Typical example |
|---|---|
| Redesign or new theme | The old sidebar listed all categories, the new one does not |
| Pagination or "load more" built with JavaScript buttons | Products beyond the first screen have no crawlable link |
| Expired listings | Product removed from its category and the URL still returns 200 |
| CMS quirks | Pages published and never added to a menu, tag archives disabled |
| Site migration | Old URLs redirected, internal links not updated, some pages dropped from navigation |
| Campaign pages | Landing pages built for ads or email and left live for years |
| Programmatic pages | Thousands of generated pages with no hub or index page linking to them |
| Faceted navigation cleanup | Filters blocked or removed, and items reachable only through those filters lose their path |
Finding orphan pages
The method is always the same: build a list of every URL that exists, build a list of every URL reachable by links, and subtract. The work is in collecting the first list from enough sources.
Step 1: collect "known" URLs
Use as many of these as you have:
- XML sitemaps. Pull every URL, including nested sitemaps, with the Sitemap URL Extractor.
- Search Console, Page indexing report. Export the indexed pages and each not-indexed reason. Exports are capped at 1,000 rows per list, so on large sites filter by sitemap or use several URL-prefix properties for sections.
- Search Console, Performance report. Pages tab, longest date range, export. Any URL that ever got an impression is here.
- Search Console, Links report. External links > Top linked pages shows URLs other sites link to, including ones you forgot about.
- Analytics. Landing page report for the last 12 months.
- Your CMS or database. The most complete source. An export of all published posts, products and pages.
- Server logs. Every URL Googlebot requested. This catches URLs that exist nowhere else. See log file analysis for Googlebot.
Merge everything into one column and normalise it: one protocol, one hostname, no tracking parameters, no duplicates. The URL List Cleaner handles the deduplication and normalising.
Step 2: collect "linked" URLs
Crawl the site with a desktop crawler, starting from the homepage and following internal links only. Two settings matter:
- Turn off any option that seeds the crawl from the sitemap, or the orphans will be pulled in and look linked.
- Turn on JavaScript rendering if your navigation or listings are rendered client-side, so the crawler sees roughly what Google sees.
Export all internal HTML URLs that returned 200.
Step 3: subtract
Anything in the "known" list and missing from the "linked" list is an orphan candidate. A spreadsheet VLOOKUP or COUNTIF does the job:
=IF(COUNTIF(linked!A:A, A2)=0, "orphan", "linked")
Screaming Frog and Sitebulb can do this for you if you connect the sitemap, Search Console and Analytics sources, but the manual way works and shows you what is going on.
Step 4: check the candidates
Before fixing anything, get the status of each candidate with the Bulk HTTP Status Checker. Many "orphans" turn out to be 404s and redirects, which is fine. You only care about URLs that return 200 and are indexable.
Decide what each orphan deserves
Do not blindly link everything. Sort the live orphans into four groups.
| Group | Example | Action |
|---|---|---|
| Valuable, should rank | A good article dropped from navigation | Add internal links, keep in sitemap |
| Valuable, replaced | Old version of a guide | 301 redirect to the current version |
| Intentionally unlinked | Ad landing pages, thank-you pages | Add noindex, remove from sitemap |
| Worthless | Test pages, empty tag archives, expired listings | Return 404 or 410, remove from sitemap |
The third group matters more than people think. A pile of near-identical campaign landing pages that are indexable and in the sitemap is a duplicate content problem waiting to be noticed. Note that noindex only works if Google can crawl the page, so do not also block those URLs in robots.txt.
Fixing the ones worth keeping
Add links that a visitor would find useful, from pages that Google already crawls and indexes:
- The parent category or hub. Every page should be listed on the page one level above it.
- Related articles or products. Two or three contextual links inside body text, with descriptive anchors.
- Breadcrumbs. They connect the page upward, and make the parent link back down if your listing is complete.
- An HTML index. For big collections, a plain paginated A to Z or archive page guarantees that every item has at least one link.
Use real <a href> links. Google's documentation is clear that links built from onclick handlers or non-anchor elements may not be followed. The wider linking strategy is covered in internal linking for indexing.
After adding links:
- Make sure the page is in the sitemap with an accurate
lastmod. - For a handful of important URLs, use URL Inspection > Request indexing.
- For a long list, let Google find them through the new links. It will, once the linking pages are recrawled.
How to confirm the fix worked
- URL Inspection > Page indexing > Discovery. The "Referring page" field should start to show an internal URL. If it still says "None detected", Google has not recrawled the linking page yet, or cannot see the link. This data can lag, so give it a couple of weeks.
- Re-run the crawl comparison. The orphan count should drop to the intentional ones only.
- Page indexing report. Watch the affected URLs move out of "Discovered - currently not indexed" or "URL is unknown to Google" over the following weeks.
If you track index status with TurboIndex, tag the fixed URLs and watch their status change. It reads the same data through the URL Inspection API, so you do not need to inspect each URL by hand.
Mistakes to avoid
- Linking all orphans from one giant "sitemap" page in the footer. It solves discovery and nothing else. A single link from a page with 3,000 links on it is a very weak signal. Use it as a backstop, not as the fix.
- Treating the XML sitemap as the fix. It is step zero.
- Redirecting every orphan to the homepage. Google commonly treats irrelevant redirects to the homepage as soft 404s. Redirect to a relevant equivalent or return 404.
- Running the audit once. Orphans are a process problem. Re-run the comparison after each redesign, migration, and big content cleanup.
- Forgetting mobile. Google crawls with the smartphone user agent. If a link exists only in the desktop menu, the target may be an orphan as far as Google is concerned.
Prevention
Build it into publishing. Every new page gets: a place in a category or hub, at least two contextual links from existing pages, a sitemap entry. On programmatic or very large sites, generate hub pages alongside the item pages so that no template can produce a page without a parent. A monthly crawl-versus-sitemap comparison catches whatever slips through.
Frequently asked questions
- Can an orphan page be indexed?
- Yes, if Google learns about it another way, such as a sitemap, an external link or an old crawl. It is less likely to be indexed and less likely to rank, because no internal links means no internal signals of importance or context.
- Does adding an orphan page to the sitemap fix it?
- It fixes discovery only. Google will know the URL exists, but the page is still unlinked, so it often sits in 'Discovered - currently not indexed'. Add real internal links as well.
- Are all orphan pages a problem?
- No. Paid landing pages, thank-you pages and email-only pages are often orphaned on purpose. Those should carry a noindex tag and stay out of the sitemap. The problem is orphan pages that you want to rank.
- How do I find orphan pages without paid tools?
- Export the URLs from your sitemap and from Search Console (Page indexing report and Performance report), then compare them with the list of pages reachable by clicking through your site. Anything in the first group and not the second is an orphan candidate.