<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Link Pulse Blog</title><description>The internal linking tool for WordPress that runs on your own site. Eight scored signals in the block editor. Nothing leaves your site.</description><link>https://wplinkpulse.com/</link><language>en-gb</language><item><title>What an internal link audit is, and how to run one</title><link>https://wplinkpulse.com/blog/internal-link-audit/</link><guid isPermaLink="true">https://wplinkpulse.com/blog/internal-link-audit/</guid><description>An internal link audit finds the pages nothing links to, the ones linked too little, and the anchors that mislead. Here is what it checks and how to run one.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Internal link structure decays quietly. You publish something new, you link back to the two or three older posts you happen to remember, and you move on. The posts you do not remember get nothing. Repeat that across a few hundred articles and a few years, and you have a site where some pages are linked from a dozen places and others from nowhere at all — with no way to tell which is which by reading it.&lt;/p&gt;
&lt;p&gt;An internal link audit is how you make that structure visible. It is the difference between assuming your site links together sensibly and knowing where it does not.&lt;/p&gt;
&lt;p&gt;This article covers what an audit checks, and a repeatable way to run one.&lt;/p&gt;
&lt;h2 id=&quot;what-an-internal-link-audit-is&quot;&gt;What an internal link audit is&lt;/h2&gt;
&lt;p&gt;An internal link audit is a systematic review of the links &lt;em&gt;within&lt;/em&gt; your own site: which pages link to which, how many inbound internal links each page has, and whether the anchor text describes where the link goes.&lt;/p&gt;
&lt;p&gt;It is not a backlink audit. That examines the links pointing to your site from other domains, which you mostly do not control. An internal link audit examines the links you placed yourself, every one of which you can change.&lt;/p&gt;
&lt;p&gt;It is also more than a broken-link check. Finding links that lead to deleted pages is part of an audit, but a page can have no broken links pointing at it and still be invisible to the rest of the site because nothing links to it at all.&lt;/p&gt;
&lt;p&gt;An audit is periodic rather than one-off, for a structural reason: the link graph changes every time you publish. A page that was well connected a year and fifty posts ago may be underlinked now, because the site grew around it.&lt;/p&gt;
&lt;h2 id=&quot;what-an-audit-looks-for&quot;&gt;What an audit looks for&lt;/h2&gt;
&lt;p&gt;Five things.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Orphan pages.&lt;/strong&gt; An orphan page is an indexed page with no internal links pointing to it at all. Nothing on the site leads a reader or a crawler to it. It can still be reached from the sitemap or from outside, but within the site it is stranded.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Underlinked pages.&lt;/strong&gt; An underlinked page has fewer inbound internal links than its importance calls for. The word &lt;em&gt;importance&lt;/em&gt; is doing real work here: the expected number is relative to the rest of your site and to how important the page is, not a fixed count. A cornerstone guide with three inbound links is underlinked; a minor note with the same three may be linked exactly as much as it warrants.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anchor text quality.&lt;/strong&gt; Anchor text is the visible, clickable words of a link. An audit flags anchors that describe nothing — “click here”, “read more”, “this post” — on links that matter. A descriptive anchor tells a reader where the link goes before they click, and tells a search engine what the destination is about. A generic anchor wastes both.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Link depth.&lt;/strong&gt; Link depth is how many clicks a page sits from the home page. Pages buried deep are discovered later and re-crawled less often than pages a click or two from the top. An audit surfaces the pages that have drifted too far down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Broken and redirected internal links.&lt;/strong&gt; Links to pages that have moved or been deleted, and redirect chains where a single hop would do. These are the most familiar kind of link problem and the narrowest — worth fixing, but not the whole audit.&lt;/p&gt;
&lt;h2 id=&quot;how-to-run-an-internal-link-audit&quot;&gt;How to run an internal link audit&lt;/h2&gt;
&lt;p&gt;The method is the same whether you do it by hand or with a tool. The difference is how far it scales.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Inventory your internal links.&lt;/strong&gt; List every internal link on the site: its source page, its destination, and its anchor text. On a small site a crawler will export this in a few minutes. By hand, it means holding the entire site in your head at once — which is why manual audits tend to happen once and not twice.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Find the orphans.&lt;/strong&gt; Compare every indexed page against the set of pages that appear as a destination anywhere. Anything that is indexed but never a destination is orphaned. One practical note before you start: exclude your utility pages first. A privacy policy, terms page, and cookie notice are all legitimately orphaned, and none of that is a problem worth solving. Left in, they bury the orphans that matter under noise.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Find the underlinked.&lt;/strong&gt; Rank your pages by inbound internal links relative to their importance. The pages with the largest shortfall between the links they have and the links they warrant are your real opportunities — usually older, substantial posts that newer writing should be pointing at and is not.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Review the anchors.&lt;/strong&gt; Look at the anchor text on your most important internal links. Where an anchor says nothing about its destination, rewrite it so it does. This is quick, and it is the part of an audit most often skipped.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Fix, then re-check.&lt;/strong&gt; Add links from relevant existing posts to the orphaned and underlinked pages, correct the weak anchors, and run the audit again. An audit is only finished when the next pass comes back clean.&lt;/p&gt;
&lt;p&gt;One honest limit, stated plainly: an audit shows you the structural gaps in how your site links together. It does not tell you what closing them will do to any particular ranking, because no one can honestly tell you that. Internal links help readers and search engines reach the work you have already published. That is a sound reason to fix them, and it is the reason to trust.&lt;/p&gt;
&lt;h2 id=&quot;running-the-audit-continuously-with-link-pulse&quot;&gt;Running the audit continuously with Link Pulse&lt;/h2&gt;
&lt;p&gt;Steps one through three are the part that does not scale by hand, and they are the part &lt;a href=&quot;/features/&quot;&gt;Link Pulse indexes your content&lt;/a&gt; to handle on your own server.&lt;/p&gt;
&lt;p&gt;It indexes your published posts and pages, then builds two reports from that index: &lt;a href=&quot;/docs/reports/&quot;&gt;the orphan and underlinked reports&lt;/a&gt;, which name the pages nothing links to and the pages linked less than their importance calls for. While you write, it also ranks the most relevant internal targets for the post in front of you, each with a match score and &lt;a href=&quot;/docs/how-ranking-works/&quot;&gt;the eight ranking signals&lt;/a&gt; that produced it — so the audit stops being a periodic project and becomes something that happens as you publish.&lt;/p&gt;
&lt;p&gt;The ranking is deterministic: the same content and the same settings produce the same result every time. Indexing and ranking run entirely on your WordPress install. No content is sent anywhere, no API key is required, and there is no account to create.&lt;/p&gt;
&lt;h2 id=&quot;how-often-to-run-an-internal-link-audit&quot;&gt;How often to run an internal link audit&lt;/h2&gt;
&lt;p&gt;Tie the cadence to how much you publish, not to the calendar. Every batch of new posts creates the same two problems at once: the newest pages are the most likely to be underlinked, because nothing written before them could link to them, and the older pages they should point to are the easiest to forget. A quarterly audit catches this late. An index that updates as you write catches it while the post is still open.&lt;/p&gt;
&lt;p&gt;Run it after you publish, and the structure never drifts far enough to need rescuing.&lt;/p&gt;
&lt;p&gt;Internal linking is worth doing well because it is one of the few parts of your site’s structure entirely within your control. An audit is how you keep it that way.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Try it on your own site — &lt;a href=&quot;/download/&quot;&gt;download Link Pulse Free&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title>Introducing Link Pulse: scored internal link suggestions</title><link>https://wplinkpulse.com/blog/introducing-link-pulse/</link><guid isPermaLink="true">https://wplinkpulse.com/blog/introducing-link-pulse/</guid><description>A free WordPress plugin that suggests internal links in the block editor, scores every candidate across eight weighted signals, and runs on your own site.</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Internal linking is added by memory, and only in one direction.&lt;/p&gt;
&lt;p&gt;You draft a new post, recall an older one that fits, and link to it. This works going forward, not backward: a post published in March is never linked from anything written in April, because April’s writing is not informed by March’s archive. Repeated across two years and a few hundred posts, the result is a site where some pages are linked from a dozen places and others from none, with no practical way to tell which is which.&lt;/p&gt;
&lt;p&gt;Auditing that by hand means holding an entire site in memory at once. Doing it once is possible. Auditing it by hand a second time is not realistic, and so it is left undone.&lt;/p&gt;
&lt;p&gt;Link Pulse is a free WordPress plugin that performs that audit continuously. It indexes published content, scores every possible link target against the post currently being edited, and returns the ranked results in the block editor sidebar, together with the reason each one ranked where it did.&lt;/p&gt;
&lt;h2 id=&quot;what-it-does&quot;&gt;What it does&lt;/h2&gt;
&lt;p&gt;Three things, in order.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It indexes your content.&lt;/strong&gt; Titles, excerpts, headings, cleaned body text, taxonomy terms, slugs, parent/child relationships, and existing internal link counts. All of it is stored in tables in your own WordPress database.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It scores candidates while you write.&lt;/strong&gt; Opening a post in the block editor opens the Link Pulse sidebar, which ranks the most relevant targets from your own content. Each result shows a match score; expanding it shows the signals that produced that score.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You insert with one click.&lt;/strong&gt; Choose anchor text, then insert. Dismissed suggestions stay dismissed — they do not reappear later with a different score.&lt;/p&gt;
&lt;h2 id=&quot;the-scoring-in-full&quot;&gt;The scoring, in full&lt;/h2&gt;
&lt;p&gt;Every candidate is scored across eight signals, each normalised to a 0–1 range and combined into a single weighted sum. This is the mechanism most internal-linking tools decline to disclose.&lt;/p&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th align=&quot;left&quot;&gt;Signal&lt;/th&gt;&lt;th align=&quot;right&quot;&gt;Weight&lt;/th&gt;&lt;th align=&quot;left&quot;&gt;What it measures&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Taxonomy overlap&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.30&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Shared categories and tags&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Title overlap&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.20&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Term overlap between the two titles&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Body keyword overlap&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.15&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Term overlap across cleaned body text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Heading overlap&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.10&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Term overlap across headings, tracked separately from body&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Link graph relevance&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.10&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;How the candidate sits in your existing link structure&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Excerpt overlap&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.05&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Term overlap in excerpts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Custom field overlap&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.05&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Overlap across custom fields you chose to index&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align=&quot;left&quot;&gt;Priority score&lt;/td&gt;&lt;td align=&quot;right&quot;&gt;0.05&lt;/td&gt;&lt;td align=&quot;left&quot;&gt;Manual priority you have set on a page&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The weights sum to exactly 1.00. There is no hidden ninth signal and no adjustment layer applied on top of the arithmetic.&lt;/p&gt;
&lt;h3 id=&quot;why-taxonomy-outweighs-the-title&quot;&gt;Why taxonomy outweighs the title&lt;/h3&gt;
&lt;p&gt;This weighting is the one figure in the table that requires explanation.&lt;/p&gt;
&lt;p&gt;Shared words are weak evidence that two posts are related. A post called “The Best Books of 2025” and a post called “Best Camera Bags” share the word “best” and nothing else that matters. Weighting title overlap heavily produces exactly this failure: results that are lexically similar and topically unrelated. This is the common failure mode of keyword-matching link plugins.&lt;/p&gt;
&lt;p&gt;Shared taxonomy is stronger evidence. Filing two posts under the same category is a judgement that they belong together — and that judgement carries more information than word frequency.&lt;/p&gt;
&lt;p&gt;Weighting title and heading too heavily produces exactly this failure. Taxonomy therefore leads at 0.30; title and body carry the remaining textual weight; heading, excerpt, and custom fields contribute at lower weights.&lt;/p&gt;
&lt;h3 id=&quot;what-happens-when-a-signal-does-not-apply&quot;&gt;What happens when a signal does not apply&lt;/h3&gt;
&lt;p&gt;If a site does not use categories and tags, scoring every candidate against taxonomy would permanently cap what any suggestion could achieve. Signals a site does not use are dropped from the calculation entirely, rather than reducing every score by a fixed amount.&lt;/p&gt;
&lt;p&gt;The distinction: this protects a &lt;em&gt;site&lt;/em&gt; that does not use a signal — not an individual &lt;em&gt;post&lt;/em&gt; that lacks it. If a site does use taxonomy and a particular target has none, that target takes a real zero, because redistributing its weight onto title matching would reward exactly the shallow word collisions the weighting was designed to avoid.&lt;/p&gt;
&lt;p&gt;A penalty is applied after the weighted sum: a page that is already heavily linked scores lower than the same page would with fewer inbound links. The penalty directs suggestions toward pages that still need links, rather than adding further weight to pages that already have them.&lt;/p&gt;
&lt;p&gt;The full model, including normalisation and the penalty thresholds, is documented in &lt;a href=&quot;/docs/how-ranking-works/&quot;&gt;how ranking works&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;reproducible-and-why-that-matters&quot;&gt;Reproducible, and why that matters&lt;/h2&gt;
&lt;p&gt;Same content, same settings, same results — every time.&lt;/p&gt;
&lt;p&gt;It is the difference between a tool that can be used and one that must be managed. A suggestion rejected on Monday does not return on Thursday with a different score and a different position. When a ranking looks wrong, the breakdown identifies the signal responsible, and the cause can be corrected directly — commonly a tag applied more broadly than intended.&lt;/p&gt;
&lt;p&gt;Nothing is inferred. There is no model, no external call, and nothing to take on faith.&lt;/p&gt;
&lt;h2 id=&quot;finding-what-you-would-not&quot;&gt;Finding what you would not&lt;/h2&gt;
&lt;p&gt;Two reports, both built from the same index.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Orphan pages&lt;/strong&gt; are indexed pages with no internal links pointing to them at all. &lt;strong&gt;Underlinked pages&lt;/strong&gt; have fewer inbound links than their importance calls for.&lt;/p&gt;
&lt;p&gt;Exclude utility pages before reading these reports. A privacy policy, terms page, and cookie notice are orphaned by design and require no action. Exclusion in Link Pulse is total and bidirectional: an excluded page is never offered as a target, receives no suggestions when edited, and does not appear in the reports at all.&lt;/p&gt;
&lt;p&gt;The reports identify structural gaps. They do not predict the effect of closing those gaps on search rankings — no tool can verify that outcome.&lt;/p&gt;
&lt;h2 id=&quot;what-runs-where&quot;&gt;What runs where&lt;/h2&gt;
&lt;p&gt;Everything, on your own server.&lt;/p&gt;
&lt;p&gt;Indexing and ranking run in PHP against your own database. Link Pulse Free sends no content anywhere, requires no API key, requires no account, and has no telemetry.&lt;/p&gt;
&lt;p&gt;Pro will add optional AI reranking using a provider key you supply. This is turned on deliberately; once enabled, content is sent to the provider chosen, under that provider’s terms. Pro does not exist yet, and the feature is off by default. Stating this exception is what makes the privacy claim for Free credible — full detail is on the &lt;a href=&quot;/privacy/&quot;&gt;privacy page&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-is-in-the-free-version&quot;&gt;What is in the free version&lt;/h2&gt;
&lt;p&gt;The whole deterministic product, not a preview of it.&lt;/p&gt;
&lt;p&gt;Posts and pages indexed · suggestions in the block editor · one-click insert with anchor text · dismissals that persist · a context bank for controlling what gets indexed · exclusions · up to three custom fields · orphan and underlinked reports · background, manual, and scheduled reindexing · logs and index health monitoring.&lt;/p&gt;
&lt;p&gt;Two limits apply. Free indexes posts and pages only, not custom post types, and caps custom fields at three — both are Pro. Version 1.0 supports the block editor only. Per-site activation is supported; network activation on multisite is not, and the plugin states this explicitly rather than failing silently.&lt;/p&gt;
&lt;p&gt;Free is not a time-limited trial. There is no feature expiry, and no plan to move current features out of Free to sell Pro.&lt;/p&gt;
&lt;h2 id=&quot;installing-it&quot;&gt;Installing it&lt;/h2&gt;
&lt;p&gt;Link Pulse requires WordPress 6.6 or later and PHP 7.4 or later. &lt;a href=&quot;/download/&quot;&gt;Download it here&lt;/a&gt;, install it, run the first index, and open any post. Once indexing finishes, the sidebar shows ranked suggestions for that post.&lt;/p&gt;
&lt;p&gt;For more detail on the mechanism, &lt;a href=&quot;/features/&quot;&gt;the features page&lt;/a&gt; covers indexing scope, the sidebar, and the reports.&lt;/p&gt;</content:encoded></item></channel></rss>