DEV Community

Cover image for How to find and fix orphan pages in WordPress (a practical internal-linking audit)
krafts-ai
krafts-ai

Posted on • Originally published at relinka.krafts-ai.com

How to find and fix orphan pages in WordPress (a practical internal-linking audit)

Orphan pages — posts with zero internal links pointing to them — are one of the most common, highest-leverage, and most-ignored parts of on-page SEO. Here's how to find them, fix them with relevant links, and catch broken internal links along the way. By hand, or automated.

Why orphan pages quietly hurt you

An orphan page is a published post or page with no internal links pointing to it from the rest of your content. It can still sit in your sitemap, but nothing on the site actually links a reader (or a crawler) to it.

That matters for three concrete reasons:

  • Discovery. Internal links are how both readers and crawlers move through a site. A page with no inbound links leans entirely on the sitemap and external links to be found — a weaker position.
  • Link equity. Internal links pass authority between your own pages. An orphan receives none of it, so even a genuinely good post can stay invisible in search.
  • Reader journeys. There's no contextual path into the content. People who'd find it useful never stumble onto it.

The sneaky part: orphans accumulate over time. Your best older posts slowly become orphans as you stop linking back to them, and new posts go up without anything pointing to them yet. It's rarely one big mistake — it's drift.

Step 1 — Find your orphan pages

What you actually need is, for every published URL, the number of internal links pointing to it (its inbound links). Orphans are the ones where that number is zero.

The trap most guides miss: template links

Here's the nuance that trips people up. Your header menu, footer, sidebar, and "recent posts" widgets generate internal links on every page. If you count those, almost nothing looks orphaned — and you'll miss the real problem.

The thing to measure: you care about in-content (contextual) inbound links — links from inside the body of other posts — not boilerplate template links. A post that's only "linked" by the footer or a recent-posts widget is, for SEO purposes, still an orphan.

Method A — Crawl + spreadsheet (free, thorough)

  1. Crawl your site with a tool like Screaming Frog (free up to 500 URLs) or any crawler that reports inlinks.
  2. Open the Inlinks report. For each post, look at how many internal links point to it.
  3. Filter for posts with a very low inbound count — then manually check whether the few links they do have are just navigation/footer/widget links. If so, treat the page as an orphan.
  4. Cross-reference against your full list of published posts (from your sitemap or a CMS export) so you don't miss pages the crawler reached only via the menu.

This is the most reliable manual approach, and it's free. The downside is the template-link filtering is fiddly and you'll want to repeat it every quarter.

Method B — Your SEO plugin

Some SEO suites surface orphan or internal-link data inside WordPress. Coverage and definitions vary (and many still count template links), so verify what a given tool actually measures before trusting its "orphan" count.

Step 2 — Fix them with relevant internal links

For each orphan, the fix is to add a small number of contextual inbound links — links from inside related posts, pointing to the orphan. A few principles separate a fix that helps from one that looks spammy:

  • Relevance over volume. Find 2–3 genuinely related existing posts and link from them to the orphan. Two strong, on-topic links beat ten weak ones.
  • Descriptive anchor text, taken from the real sentence. Use the natural wording of the sentence the link sits in — not "click here," and not the exact keyword stuffed in awkwardly. The anchor should read like it belongs.
  • Natural placement. Put the link mid-content where it's actually relevant. Don't bolt links into your intro, a call-to-action, or the middle of a list where they break the flow.
  • Link both directions. Also add a couple of outbound links from the orphan to related posts, so it's woven into the topic cluster on both sides.

One pass like this on a handful of orphans is often some of the highest-leverage on-page SEO you can do in an afternoon — no new content required.

Step 3 — Fix broken internal links while you're in there

The same audit is the right moment to catch broken internal links. After slug changes, deletions, or migrations, internal links quietly rot into 404s. They waste link equity and erode reader trust.

Crawl for internal links returning 4xx status codes, then either update the link to the correct URL or set up a redirect. It's cheap, fast, and pure SEO hygiene.

A repeatable workflow

Don't over-engineer this. A simple quarterly pass (or after you publish a batch of posts) keeps it under control:

  1. Re-crawl and pull the inlinks report.
  2. Fix any new orphans with 2–3 relevant contextual links each.
  3. Fix or redirect broken internal links.
  4. Resist the urge to over-link — relevance is the whole game.

Automating the audit

Doing this by hand works, but it's tedious to repeat. I build a free, open-source WordPress plugin — Relinka — that runs exactly this audit on your own site: a 0–100 internal-link health score, an orphan-page finder, a broken-link finder, and relevant link suggestions, each with a one-sentence reason and an anchor taken from your own text, which you apply or undo in one click. It runs entirely on your server — no account, no API key, nothing leaves your site.

Disclosure: I'm the developer of Relinka. The manual method above works on its own — sharing it either way.

Top comments (0)