An orphan page is a page on your site that no other page on your site links to. Search engines can still find some of them through your sitemap or external links, but visitors browsing your site never will — and crawlers deprioritise pages that nothing points at.
The good news: finding orphans takes about fifteen minutes with any desktop crawler. Fixing them takes longer, but the fix is a decision, not a technical trick.
Disclosure: I work with SEOSage, a desktop SEO crawler. Everything in this guide works in any crawler that reports internal links, including free ones. Delete every tool name and the process still works.
What you need
- A desktop crawler that reports inlinks (links from your own pages to each page). SEOSage is the one I use day to day — a desktop crawler for Mac and Windows with unlimited local crawls on a flat $19/month or $149/year licence, which matters here because an orphan check is only trustworthy on a complete crawl. Screaming Frog SEO Spider (free up to 500 URLs) or Sitebulb (trial) work too, as long as the crawl covers the whole section you're checking.
-
Your XML sitemap URL — usually
/sitemap.xml. - A spreadsheet with columns: URL / Inlinks / Decision / Done?
Step 1: Crawl the site
Run a standard internal crawl of your homepage with default settings. When it finishes, you need one number per URL: how many internal pages link to it.
Most crawlers show this as an "Inlinks" column in the internal tab. Export the full list of crawled URLs with their inlink counts to your spreadsheet.
Watch out for one trap: if your crawl is incomplete (you stopped it early, or your site is bigger than a free tier's URL cap), pages outside the crawled section will look like orphans when they aren't. Either crawl the whole site or crawl section by section (/blog/, /products/, etc.) and note which sections each orphan result actually covers. SEOSage now guards against this in the tool itself: it only reports orphan pages after a full crawl, and on a crawl stopped early it holds the orphan list back and notes why, instead of presenting partial inlink data as orphans.
Step 2: Find the zero-inlink pages
Sort your export by inlinks, ascending. The rows with 0 inlinks are your orphan candidates.
Now cross-check against your sitemap:
- Fetch your sitemap (your crawler can usually crawl a sitemap directly, or download it and open it in a text editor).
- List every URL in the sitemap that does not appear in your crawl at all. These are true orphans — pages that exist, are declared in your sitemap, but are not reachable by following links from your homepage. They are often the most important finds: old landing pages, forgotten campaign pages, or content that got unlinked in a redesign.
- Merge both lists (0-inlink crawled pages + sitemap-only pages) into one candidate list.
Before you act, filter out pages that are supposed to be unlinked:
- Thank-you / confirmation pages after form submissions
- Checkout and account pages
- Staging, test, or admin URLs that leaked into the sitemap (fix the sitemap, not the links)
- Deliberate landing pages fed only by ads or email, where you do not want organic visitors wandering in from elsewhere on the site — these are fine, but write "intentional" in your Decision column so future-you does not "fix" them again
Step 3: Decide — keep, link, redirect, or remove
Every remaining orphan gets exactly one decision:
Keep and link (the default). The page has real content someone might want. Add links to it from the most relevant pages: the parent category page, a related article, or a "resources" hub. Two or three contextual links from genuinely related pages beat one link dumped in a footer. Write anchor text that describes the page, not "click here."
Redirect. The page is outdated or duplicated, but its URL may have external links or bookmarks. Redirect it (301) to the closest matching live page. Check first that the target is a 200 page, not another redirect — do not create chains.
Remove. The page has no value, no traffic, and no external links. Delete it, let it return a proper 404 (or 410), and remove it from the sitemap. A clean 404 for a worthless page is not an SEO problem.
Keep unlinked (rare, deliberate). Only for the intentional cases above — and only if they are also excluded from the sitemap, or you accept that the sitemap is telling Google the page matters while your links say it does not. That mixed signal is why most accidental orphans underperform.
How to choose quickly: open each orphan and ask, "If a visitor landed here from Google, would this page help them?" Yes → link it. Was yes once → redirect it. Never → remove it.
Step 4: Fix the sitemap while you are here
Your sitemap should list only pages that return 200, are indexable, and are the canonical version of themselves. While you have the crawl open:
- Remove sitemap URLs that redirect (list the final destination instead)
- Remove sitemap URLs with a
noindextag or blocked by robots.txt — sending Google a URL and telling it not to index or crawl it is a contradiction - Add any important page you just rescued from orphan status, if your sitemap is manual
If your sitemap is auto-generated by your CMS, fix the source (the page status or settings), not the file.
Step 5: Re-crawl and verify
Wait until your link changes are live, then re-crawl the same scope as Step 1 and re-export the inlink counts.
Check three things:
- Every page you decided to "link" now has at least 1 inlink — ideally 2–3.
- Every redirect you created lands directly on a 200 page in one hop.
- Your orphan count dropped to only the intentional ones.
Diff the two exports. If a "fixed" page still shows 0 inlinks, the link you added is probably on a page outside the crawl scope, behind JavaScript your crawl did not render, or pointing at a URL variant (trailing slash, www vs non-www) that is not the canonical one. Fix the link target to the exact canonical URL.
A realistic timetable
- Under 500 pages: one sitting, start to finish.
- 500–5,000 pages: crawl and analysis in one sitting; link fixes spread over a few days because they are small content edits, not one bulk action.
- Bigger than that: work section by section; directories (folders) usually share templates, so fixing one category page often rescues a whole group of orphans at once.
The mistake to avoid is treating this as a one-time cleanup. Every redesign, migration, or menu change creates new orphans. Add "re-run the orphan check" to whatever checklist you already use after site changes, and it stays a fifteen-minute job instead of becoming an archaeological dig.
Quick recap
- Crawl the site; export URLs with inlink counts.
- Zero-inlink pages + sitemap-only pages = your orphan candidates.
- Exclude intentional unlinked pages (thank-you, checkout, ad-only landers).
- Decide per page: link it, redirect it, remove it, or deliberately leave it.
- Clean the sitemap: 200, indexable, canonical URLs only.
- Re-crawl and diff to verify every fix actually landed.
Do this once and your internal linking stops having silent dead ends — which usually does more for the pages you already have than publishing new ones on top of a broken structure.
Top comments (0)