An orphan page is a page on your site that no other page links to. Visitors can’t click their way to it, and search engines have to rely on your sitemap or an old link to find it. In WordPress, orphans pile up quietly: a landing page built for an old campaign, a blog post pushed deep into pagination, a WooCommerce product hidden from the catalog, a page someone published and never added to a menu.
Finding them sounds simple, but there is a catch most guides skip. WordPress SEO plugins and website crawlers use different definitions of “orphan”, so they produce different lists. This guide explains the difference, then walks through four ways to find orphan pages, from a free plugin-free method to the paid tools, and what to do with each page once you’ve found it.
- Plugin Orphans vs Crawl Orphans
- Where Orphan Pages Come From in WordPress
- Method 1: Use a WordPress SEO Plugin (Content Orphans)
- Method 2: Crawl Your Site With Screaming Frog (Crawl Orphans)
- Method 3: The Free DIY Method (WP-CLI or Sitemap Plus a Spreadsheet)
- Method 4: Use Google Search Console as a Cross-Check
- Compare the Methods
- What to Do With Each Orphan Page
- How to Stop New Orphan Pages
- FAQs
Plugin Orphans vs Crawl Orphans
Plugin reports usually check links inside post content. A page linked only from your main menu may show up as orphaned in a plugin even though Google can reach it easily. A crawler, on the other hand, follows every link on the rendered page, so it finds the pages that are truly cut off from the rest of the site.
Use both views. Crawl orphans need fixing first, because search engines struggle to discover and value them. Content orphans are pages that could rank better with contextual links from related articles.
Where Orphan Pages Come From in WordPress
Table 1: Common WordPress Sources of Orphan Pages
| Source | Why It Becomes an Orphan | Example |
|---|---|---|
| Pages never added to a menu | Pages don’t appear in the blog feed, so they need a manual link | /thank-you/, /old-landing-page/ |
| Campaign landing pages | Built for ads or email, then forgotten | /spring-sale-2025/ |
| Old posts deep in pagination | Only linked from page 30 of the blog archive | An article from five years ago |
| Deleted categories or tags | Removing an archive removes the only link to some posts | Posts that lived in a retired category |
| Changed URLs without updated links | Internal links still point to the old URL, which redirects or 404s | Slug changes after a rewrite |
| WooCommerce hidden products | Catalog visibility set to hidden or search only | Products sold only through direct links |
| Page builder templates and test pages | Published by accident or left live | /elementor-123/, /test-page/ |
| Attachment pages | Older sites may still publish a page for every image | /image-name/ attachment URLs |
| Custom post types | Plugins create post types without archive links | Events, portfolios, team members |
Method 1: Use a WordPress SEO Plugin (Content Orphans)
Several popular plugins flag posts that have no internal links from other content.
Table 2: WordPress Plugins With Orphan Reports
| Plugin | Where to Find It | Plan Needed |
|---|---|---|
| Yoast SEO | Posts, Pages or custom post type list, then the “Orphaned content” filter | Premium ($118.80 a year) |
| All in One SEO | Link Assistant, then the Orphaned Posts count and Links Report filter | Pro or higher |
| Link Whisper | Reports, then Orphaned Posts | Premium |
| Rank Math | Posts list Link Counter columns; sort by incoming links | Free (no dedicated orphan filter) |
- Run the plugin’s link scan after installing, so it can index existing links.
- Filter for orphaned content in each post type, including pages and custom post types.
- Check each result against your menus and footer before acting. If the page is linked there, it is a content orphan only.
For adding links at scale once you know where they’re missing, see our list of AI internal linking tools.
Method 2: Crawl Your Site With Screaming Frog (Crawl Orphans)
A crawler finds pages that no link reaches at all. Screaming Frog has a built-in orphan pages workflow:
- Go to Configuration, then Spider, then Crawl, and tick Crawl Linked XML Sitemaps. Point it to your sitemap index, for example /sitemap_index.xml in Yoast or Rank Math, or /wp-sitemap.xml for WordPress core.
- Connect Google Analytics and Search Console under Configuration, then API Access, so pages that get visits or impressions but have no links are included.
- Crawl the site, then run Crawl Analysis. The orphan filters only fill in after this step.
- Open Reports, then Orphan Pages to export every orphan URL, with a column showing whether it came from the sitemap, GA or Search Console.
Screaming Frog’s paid licence is needed for the API connections and for crawling more than 500 URLs. Site audit tools in Ahrefs and Semrush also flag orphan pages when you give them your sitemap or connect analytics.
Method 3: The Free DIY Method (WP-CLI or Sitemap Plus a Spreadsheet)
If you’d rather not pay for a plugin or crawler licence, compare two lists: every published URL on your site, and every URL that receives an internal link.
Step 1: Get Every Published URL
With WP-CLI on your server:
wp post list --post_type=post,page,product --post_status=publish \
--fields=ID,post_title,url --format=csv > all-urls.csv
Without WP-CLI, open your XML sitemap in a browser and copy the URLs into a spreadsheet, or use any free sitemap-to-CSV tool. Remember that sitemaps can exclude noindexed pages, which may also be orphans.
Step 2: Get Every Internally Linked URL
Crawl the site with any crawler without adding the sitemap, so only pages reachable through links are found. Export the list of internal link destinations. In Screaming Frog, that is Bulk Export, then Links, then All Inlinks, using the Destination column. The free version covers sites up to 500 URLs.
Step 3: Compare the Two Lists
Paste all published URLs in column A of one sheet and all link destinations into a sheet named Inlinks. Then in column B:
=IF(COUNTIF(Inlinks!A:A, A2)=0, "Orphan", "Linked")
Normalize URLs first so the comparison works: use the same protocol, the same www setting and the same trailing slash on both lists.
Method 4: Use Google Search Console as a Cross-Check
- Open Links in Search Console and export Top linked pages under Internal links. Published pages missing from that export may have few or no internal links.
- Check the Page indexing report for Discovered, currently not indexed and Crawled, currently not indexed. Orphan pages often end up there, because Google sees little internal signal that they matter.
If many orphans sit in those statuses, our guide to fixing crawled, currently not indexed explains the next steps.
Compare the Methods
Table 3: Orphan Page Methods Compared
| Method | Finds | Cost | Best For |
|---|---|---|---|
| SEO plugin report | Content orphans | Premium plugin plans | Ongoing checks inside WordPress |
| Screaming Frog orphan report | Crawl orphans from sitemap, GA and GSC | Paid licence for full use | Thorough technical audits |
| DIY lists and spreadsheet | Crawl orphans | Free | Small sites and tight budgets |
| Search Console cross-check | Weakly linked pages | Free | Quick sanity check |
What to Do With Each Orphan Page
Table 4: Decide the Fate of Every Orphan
| Situation | Action |
|---|---|
| Valuable page that should rank | Add contextual links from 2 to 5 related posts, plus a hub or category page |
| Outdated but still relevant | Update the content, then link to it from current articles |
| Duplicate or thin content | Merge it into a stronger page and add a 301 redirect |
| Old campaign or test page with no value | Delete it, or redirect it if it has backlinks or traffic |
| Page that should stay private | Noindex it, keep it out of the sitemap, and leave it unlinked |
| Thank-you or confirmation page | Leave it orphaned and noindexed; it is meant to be reached only after an action |
Deciding between updating, merging and deleting is the same judgment as content pruning. Our comparison of content pruning and content decay helps with borderline pages.
How to Stop New Orphan Pages
- Add at least two internal links to every new post before publishing, and link back to it from an older related article.
- Use category and pillar pages that list every important article, not just the latest ten.
- When you change a slug, update internal links instead of relying on redirects.
- Add related posts blocks that pull from the whole archive, not only recent posts.
- Run an orphan check every quarter, or after big changes such as a redesign or category cleanup.
Internal linking also helps Google find new pages faster. These tips on getting Google to index your site faster work well alongside an orphan cleanup, and our technical SEO guide covers site structure in more depth.
FAQs
What Is an Orphan Page in WordPress?
A published post, page or product that no other page on your site links to. Visitors can’t navigate to it, and search engines only find it through the sitemap or external links.
Can I Find Orphan Pages in WordPress for Free?
Yes. Compare a list of all published URLs (from WP-CLI or your sitemap) with the link destinations from a free crawl, using a COUNTIF formula in Google Sheets. Rank Math’s free link counter also shows incoming link counts.
Does Yoast SEO Find Orphan Pages?
Yoast SEO Premium has an orphaned content filter in the posts and pages lists. It is not part of the free plugin.
Why Does My Plugin Say a Page Is Orphaned When It Is in My Menu?
Most plugins count links inside post content. Menu, footer and sidebar links usually aren’t counted, so the page is a content orphan but not a crawl orphan.
Are Orphan Pages Bad for SEO?
Important pages that are orphaned are harder for Google to discover and receive little internal link value, so they tend to rank poorly. Orphaned pages that are meant to be private, such as thank-you pages, are not a problem.