How to Check Internal Links in WordPress (Free Tools and Fixes)

Every WordPress site quietly accumulates internal-linking debt. Posts get published in a hurry without a single link pointing to them. Old links break when slugs change. A handful of pages collect all the attention while the rest sit three or four clicks deep where neither readers nor Google bother to go. None of this announces itself — you only see it when you actually check. The good news: checking is free, and it takes an afternoon, not a week.
This guide walks through the internal link checkers we actually use — Google Search Console, a desktop crawler, a couple of search-operator tricks, and WordPress plugins that report from inside the site — plus what “healthy” looks like once you have the numbers in front of you.
What an internal link audit should tell you
Before opening any tool, it helps to know what you’re looking for. A useful audit answers four questions:
- Which pages have no internal links pointing to them? These are orphaned pages — invisible to anyone navigating your site, and deprioritized by search engines.
- Which internal links are broken? Links to deleted posts, changed slugs, or typo’d URLs waste crawl budget and dead-end your readers.
- How is link equity distributed? Your most important pages should have the most inlinks. Very often it’s the opposite: the contact page has fifty and your best guide has two.
- How deep is your content? If a post takes four or more clicks to reach from the homepage, both crawlers and humans will struggle to find it.
Method 1: Google Search Console’s Links report
If your site is verified in Search Console, you already have an internal link checker — it’s just well hidden. In the left sidebar, scroll to the bottom and open Links. The right-hand column, “Internal links”, lists your pages sorted by how many internal links Google found pointing to each one.
How we read this report:
- Check the top of the list. These are the pages Google considers most central on your site. If the top ten is dominated by tag archives, the privacy policy, and the login page rather than your money pages, your linking priorities need work.
- Export the full list (Export button, top right) and compare it against your sitemap. Any published post that appears in the sitemap but not in the internal links report is effectively orphaned in Google’s view of your site.
- Click any URL to see which pages link to it — useful when you want to know where a page’s equity comes from.
The limits: the report only counts links Google has crawled, updates on Google’s schedule rather than yours, and won’t flag broken links at all. It’s a great free snapshot, not a complete audit.
Method 2: Crawl the site with Screaming Frog (free up to 500 URLs)
Screaming Frog’s SEO Spider is the standard desktop crawler, and the free tier handles up to 500 URLs — enough for most blogs. Point it at your homepage, let it crawl, and three views do most of the work:
- Crawl Depth (in the Site Structure tab on the right): shows how many clicks each page sits from the start URL. Anything at depth 4+ is a candidate for new links from shallower pages.
- Inlinks count (add the “Unique Inlinks” column in the Internal tab): sort ascending and the top of the list is your orphan-and-nearly-orphan report. Pages with 0–2 inlinks need attention.
- Response Codes → Client Error (4xx): every broken internal link, with an “Inlinks” panel showing exactly which page and anchor text produced it. Fix these first — they’re pure loss.
The paid version adds scheduling and bigger crawls, but for a periodic manual audit the free tier is genuinely enough.
Method 3: Quick checks with the site: operator
Two search tricks that cost nothing and take seconds:
site:yourdomain.com "exact phrase from a post"— confirms whether a page is indexed at all before you worry about its links.site:yourdomain.com intext:"anchor text"— a rough way to find which of your pages mention a phrase, i.e. candidate spots to add a contextual link toward the page that covers that topic.
These are approximations — Google’s operators are increasingly loose — but for spotting “I’ve written about this five times and never linked any of them together”, they’re surprisingly effective.
Method 4: Check from inside WordPress with a plugin
Crawlers see your site from the outside; a plugin sees the actual post content in the database, which makes it the most convenient option for ongoing monitoring rather than one-off audits. A good internal-linking plugin will report orphaned posts, broken internal links, and per-post inlink counts right in the dashboard, and let you fix issues from the same screen instead of bouncing between a crawl export and the editor.
Full disclosure: JnK Linkweave is our own plugin — the free core on WordPress.org includes an orphaned-content report, a broken-link checker, and per-post link counts, because those are exactly the checks we kept running by hand. Internal Link Juicer and Link Whisper offer reporting along similar lines; our plugin comparison goes through the whole field if you want to weigh options.
What “good” looks like
Numbers without a benchmark are just numbers. The targets we aim for:
| Check | Healthy target | Red flag |
|---|---|---|
| Inlinks per published post | 3 or more contextual links | 0–1 (orphaned or nearly) |
| Broken internal links | Zero | Any — they only accumulate |
| Click depth | Everything within 3 clicks of home | Content at depth 4+ |
| Most-linked pages | Your pillar/cornerstone content | Utility pages (contact, legal, archives) |
| Anchor text | Descriptive and varied | Dozens of identical exact-match anchors |
Two of these deserve their own deep dives: we’ve written a full walkthrough on finding orphaned pages and another on finding and fixing broken links — both expand the quick checks above into complete workflows.
A simple recurring workflow
An audit you run once is a snapshot; linking debt comes back the moment you resume publishing. The cadence that works for us:
- Monthly (15 minutes): glance at the Search Console Links report; fix anything with zero inlinks; spot-check the top-linked list still makes sense.
- Quarterly (an afternoon): full crawl, fix all 4xx internal links, pull the low-inlink list, and add contextual links from your highest-traffic pages down to the neglected ones.
- On every publish: add two or three links from existing related posts to the new one — not just from the new post outward. This is the habit that prevents orphans from existing in the first place.
The whole point of checking internal links is to make the fixes boring and small. Caught monthly, it’s a coffee-break task. Discovered after three years, it’s a migration-sized project.
Frequently asked questions
How do I check internal links in WordPress for free?
Use Google Search Console’s Links report for a quick inlink count per page, and Screaming Frog’s free tier (up to 500 URLs) for click depth and broken links. Free WordPress plugins can run the same checks from inside the dashboard on an ongoing basis.
How many internal links should each post have?
As a baseline, every published post should receive at least three contextual internal links from other pages, and your most important pages should receive the most. There is no fixed upper limit — links should exist wherever they genuinely help a reader move to related content.
Do broken internal links hurt SEO?
Yes. Broken internal links waste crawl budget, dead-end users, and stop link equity from flowing to the target page. They accumulate silently as slugs change and posts get deleted, which is why a recurring check matters more than a one-off cleanup.