Internal Link Planner

List your pages with their topics or target keywords, and optionally the links that already exist. The planner suggests which pages should link to each other, proposes anchor text, and highlights pages that nothing links to.

Format: address | page title | keywords separated by commas. The title and keywords are optional but give much better suggestions.

Format: from address -> to address. Used to skip links you already have and to find orphaned pages.

Step-by-step guide: How to Plan Internal Links for SEO

How to use the Internal Link Planner

  1. List the pages you want to connect, one per line. Include a page title and a few target keywords after vertical bars, as in the example.
  2. If you know which internal links already exist — from a crawl export, for example — add them in the second box. This lets the planner skip existing links and detect orphaned pages.
  3. Choose how many suggestions you want per page and the minimum relevance. Higher relevance gives fewer, stronger suggestions.
  4. Select Plan internal links. Suggestions are sorted by relevance, each with a proposed anchor text drawn from the target page’s keywords.
  5. Work through the plan in your CMS, adding links where they read naturally within the content. Download the CSV to track progress.

Example: a small gardening blog

Given four pages:

/tomatoes/ | Growing tomatoes | tomato plants, tomato care
/tomato-blight/ | Tomato blight explained | tomato blight, plant disease
/raised-beds/ | Building raised beds | raised beds, vegetable garden
/compost/ | Making compost | compost, soil, vegetable garden

the planner suggests linking /tomatoes/ → /tomato-blight/ with the anchor “tomato blight”, because both pages share the word “tomato”, and /raised-beds/ ↔ /compost/ through the shared phrase “vegetable garden”. If the existing links show nothing pointing to /compost/, it is flagged as an orphaned page.

How suggestions are scored

For each page, the planner builds a set of significant words from three sources: the keywords you listed (weighted most heavily), the page title and the words in the URL path. Common words are removed and regular plurals are reduced to their singular form.

Relevance between two pages is the weighted share of words they have in common, a cosine-style similarity between 0 and 1. A page is suggested as a link target when the score reaches your minimum, the link does not already exist, and the page is among the strongest matches for that source.

The suggested anchor text is the target page’s keyword that best matches the source page’s topic, or its title if no keywords were given. Descriptive anchors like this tell readers what to expect before they click.

Finding orphaned pages

When you provide existing links, the page overview counts the incoming links each page already has. A page with no incoming internal links is marked as orphaned: crawlers may struggle to find it and visitors can only reach it from search or external links. These pages should be first in line for new links.

Limitations to keep in mind

  • Suggestions are based on shared words in the details you supply. Pages about the same subject described with different vocabulary may not be connected.
  • The planner does not crawl your site. It only knows about pages and links you list.
  • Relevance is not the only reason to link. Navigation, conversion paths and user journeys matter too, so treat the plan as a starting point for editorial judgement.
  • Large lists are capped at 1,000 pages to keep the comparison fast in the browser.

How your data is handled

Your page list and link data stay in your browser. The planner does not upload them, store them or visit your site.

Frequently asked questions

How many internal links should a page have?

There is no fixed number. Link where it genuinely helps the reader take a next step. A few well-placed, relevant links within the body text are usually more valuable than long lists of links.

Should every suggested link be added?

No. Add a link only where it fits the sentence and helps the reader. If a suggestion would feel forced, skip it or rewrite the paragraph so the link becomes natural.

Where do I get the list of existing links?

Most site crawlers can export internal links as a list of source and destination URLs. Paste those pairs using the from -> to format. Without them, the planner still makes suggestions but cannot detect orphaned pages.

Can I use full URLs and paths together?

Use the same format throughout. If your page list uses paths such as /compost/, use paths in the existing-links box too, so the planner can match them.