Skip to content
Menu

6 min read

Introducing Link Pulse: scored internal link suggestions

Internal linking is added by memory, and only in one direction.

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.

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.

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.

What it does

Three things, in order.

It indexes your content. 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.

It scores candidates while you write. 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.

You insert with one click. Choose anchor text, then insert. Dismissed suggestions stay dismissed — they do not reappear later with a different score.

The scoring, in full

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.

SignalWeightWhat it measures
Taxonomy overlap0.30Shared categories and tags
Title overlap0.20Term overlap between the two titles
Body keyword overlap0.15Term overlap across cleaned body text
Heading overlap0.10Term overlap across headings, tracked separately from body
Link graph relevance0.10How the candidate sits in your existing link structure
Excerpt overlap0.05Term overlap in excerpts
Custom field overlap0.05Overlap across custom fields you chose to index
Priority score0.05Manual priority you have set on a page

The weights sum to exactly 1.00. There is no hidden ninth signal and no adjustment layer applied on top of the arithmetic.

Why taxonomy outweighs the title

This weighting is the one figure in the table that requires explanation.

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.

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.

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.

What happens when a signal does not apply

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.

The distinction: this protects a site that does not use a signal — not an individual post 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.

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.

The full model, including normalisation and the penalty thresholds, is documented in how ranking works.

Reproducible, and why that matters

Same content, same settings, same results — every time.

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.

Nothing is inferred. There is no model, no external call, and nothing to take on faith.

Finding what you would not

Two reports, both built from the same index.

Orphan pages are indexed pages with no internal links pointing to them at all. Underlinked pages have fewer inbound links than their importance calls for.

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.

The reports identify structural gaps. They do not predict the effect of closing those gaps on search rankings — no tool can verify that outcome.

What runs where

Everything, on your own server.

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.

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 privacy page.

What is in the free version

The whole deterministic product, not a preview of it.

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.

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.

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.

Installing it

Link Pulse requires WordPress 6.6 or later and PHP 7.4 or later. Download it here, install it, run the first index, and open any post. Once indexing finishes, the sidebar shows ranked suggestions for that post.

For more detail on the mechanism, the features page covers indexing scope, the sidebar, and the reports.

Read the ranking model

The eight signals, renormalisation, and the overlinked penalty — in the docs.