Internal Links
Internal Links finds the pages on your site that would benefit from more links pointing at them, then proposes a specific sentence on a specific page to add each link to. You review every suggestion, and nothing reaches your site until you accept it.
The tool works in three stages:
Read your pages β a crawler visits the URLs in your sitemap and records every link, where it sits on the page, and the text it could suggest links from
Prepare the topics β each page becomes a vector, so the tool can tell which pages cover the same subject
Find the links β for each page you choose, the closest pages are read again and one sentence per link is proposed, with the exact words to turn into the link

What You Need Before You Start
A connected Google Search Console property with at least one sitemap
The crawler reads the URLs listed in your sitemaps
Free
Embeddings turned on for Internal Links
Lets the tool tell which pages cover the same topic
A few cents for a whole site, once per changed page
A TypeSafe API key
Chooses the sentence and the words to link
A few cents per run
A WordPress connection (optional)
Writes accepted links into your pages automatically
Free
Without a TypeSafe key you can still crawl your site, embed your pages, and read every list in the Opportunities tab. Only the link suggestions need it.
Getting Started
When you open Internal Links on a property that has never been crawled, the page shows three numbered steps instead of empty tables. Work down them in order.
Read your pages
Click Run the crawler. The crawler opens each URL in your sitemap and records its links and its text.
Progress appears at the top of the page as "Crawlingβ¦ 24/99 URLs". The crawler paces itself so it never overloads your server β at the default of one request per second, expect roughly 60 pages per minute, so a 2,000-page site takes about half an hour.
You can leave the page while it runs.

Prepare the topics
If embeddings are not yet on for Internal Links, click Choose a model and turn them on.
Go to Settings β Embeddings, enable the master switch, then enable Internal Links pages and pick a model. Your choice here is independent of the model used for Search Console queries β the two features never share vectors.

Pull your query data first. Use Pull query data when the page offers it. With the searches each page ranks for, the tool prefers source pages that rank for the same searches, offers those searches as link text, and tells you which search a sentence matches. Without it, the run works on page similarity alone.
The Opportunities Tab
Five lists, each answering a different question about your internal linking. Every list can be searched, sorted and paged.

Priority targets
Pages ranking between position 4 and 20 with enough impressions and few body links pointing at them β the pages where one more internal link is most likely to move something. A page on page two of the results needs a smaller push than a page nobody can find.
Page
The page that could use more links
Position
Its average position over the last 28 days
Impressions (28d)
How often it appeared in results
Body links in
Links pointing at it from the main content of other pages
Top query
The search it gets the most impressions for
Each row carries two controls:
Page type β set what kind of page this is. Marking a page legal, contact or utility keeps it out of suggestions entirely, in both directions.
Sources β opens a panel listing the pages whose content is closest to this one, with a similarity score for each. This costs nothing and needs no TypeSafe key.
Orphans
Crawled pages that no other page links to from its main content. A menu or footer link does not save a page from this list β those appear on every page and carry no editorial signal.
Orphan pages are the clearest internal linking problem you can fix, and they are often pages that were published and then forgotten.
Anchors
How varied the link text pointing at each page is. Low diversity means most links to that page use the same words.
Body links in
Total editorial links pointing at the page
Distinct anchors
How many different phrases are used
Diversity
Distinct anchors as a percentage of total links
Most used anchor
The phrase used most, and how often
Below it, a second table lists the same anchor used more than three times for one page. Repeating one exact phrase across many links looks deliberate rather than natural.
Too many links
Pages with more body links than your cap allows. These pages are never used as link sources β the tool will not add an eleventh link to a page already carrying ten.
Duplicate links
Pages that link to the same page more than once from their main content. The first link is the one readers use; the rest add nothing.
Finding Links
Click Find links to open the run dialog. It answers two questions: which pages get links pointed at them, and what that costs.

Choosing the target pages
Two lists to choose from:
The priority targets β pages ranking in your chosen position range with enough impressions. This is the default, and the right choice most of the time.
Quick picks (First 10, First 25) appear when the list is long enough for them to mean something.
Every crawled page that can receive links, with the ones receiving the fewest first.
Use this for a page with no search data yet β a page you published last week can never reach the priority list, however much it needs links. A filter box helps you find it by title or path.
One run takes at most 50 target pages. The header tells you how many you have chosen, and the checkbox beside it selects or clears everything listed.
Reading the cost
The estimate leads with the total you might spend:
Embedding pages
Turning page text into vectors. Happens once per page, then only again when that page changes.
Reading pages for sentences
Reading the shortlisted source pages and choosing the sentences. This is the larger half.
The figure is quoted as "up to" on purpose. It is the most a run of this size has cost in testing; the real price depends on how much text your pages have, and shorter pages come in well under it. Recent runs have landed at roughly half the quoted ceiling.
The cost grows with the number of target pages, because each target has its own shortlist of source pages to read. Choosing 25 pages costs roughly five times what choosing 5 does.
Embed pages only
This button runs the first stage alone and stops: your pages are embedded, no suggestions are made, and nothing is spent at TypeSafe. It appears only when there are pages left to embed.
Use it to prepare a large site now and find links later, or to work before you have a TypeSafe key.
Reviewing Suggestions
The Suggestions tab groups proposals by the page they link to. Each one shows the source page, the exact sentence, the words that would become the link, and why the tool chose it.
The reason is highlighted under each sentence. When the target has search data, it names the search the page ranks for, with its position and impressions β for example Ranks #2.5 for "serving per container" (28 impressions, 31 days to Sep 20).

Available actions
Every suggestion has an Actions menu. It lists only the actions that fit the suggestion's current state.
Accept & apply
Accepts the suggestion and writes the link into the page on WordPress in one step. Needs a WordPress connection.
Accept
Reserves the link against your caps. Nothing is written to your site yet.
Apply to WordPress
Writes an accepted link into the page.
Change link text
Choose different words from the same sentence. The sentence itself is never rewritten.
Back to review
Returns an accepted, rejected or reverted suggestion to the To review tab.
Reject
Moves it to the Rejected tab. That sentence is not suggested again for the same pair of pages unless you bring it back.
Revert on WordPress
Removes an applied link from the page.
Apply again
Writes a reverted link back into the page.
The three tabs β To review, Accepted and Rejected β hold suggestions at each stage:
To review
Accept & apply, Accept, Change link text, Reject
Accepted
Apply to WordPress, Change link text, Back to review, Reject β then Revert on WordPress once applied, or Apply again after a revert
Rejected
Accept, Back to review β a rejection is never final
To act on several suggestions at once, tick their checkboxes. The buttons above the list change to match: Accept, Accept & apply and Apply for the selected rows, or Revert for applied ones.
Anything that changes your live site asks first. Accept & apply, Apply to WordPress, Apply again and Revert each open a confirmation that lists every link it will change, as the source page and the link text.
Changing the link text
Choose Actions β Change link text to pick different words from the same sentence. You choose the link text with two clicks: its first word, then its last word.
Click the first word of the link text.
Click the last word. Every word in between is included. To link a single word, click the same word twice.
Click Save.
A line above the words always tells you which click comes next. To start over, click a new first word. The link text can have up to the Maximum words in the link text setting (6 by default); a last word further away than that is refused.
You can also pick one of the Suggested phrases instead.
More suggestions for the same page
Each target page shows its three best source pages first. The others wait in a queue and are not shown yet. The group header says how many are queued β for example 3 suggestions Β· 12 more waiting.

A queued suggestion appears only when you accept or reject a suggestion shown for the same target page:
Click Accept or Reject on a suggestion.
It leaves the To review tab.
The next source page from the queue appears at the bottom of the group, and the "more waiting" count goes down by one.
When you reject a sentence and the same source page has another good sentence, that sentence is offered first, before the queue moves.
Applying Links to WordPress
If your property has a WordPress connection, accepted links can be written into your pages directly.
Reverting
Every applied link can be reverted. The sentence returns to exactly what it was before the link was added.
To revert, choose Actions β Revert on WordPress on an applied link, or tick several and click Revert above the list.
A reverted link stays in the Accepted tab. Choose Actions β Apply again to write it back into the page, or Back to review to reconsider it. Applying again re-checks your caps first, so it is refused if the page has since reached its link limit or already links to the same page.
If the page changed on your site after the link was applied, the status becomes Page changed and the link is not reverted automatically β the tool will not edit a sentence it no longer recognises. Fix those by hand.
When an apply or revert is not confirmed
If a write to WordPress is cut off β the connection drops, or the app closes mid-way β the tool cannot tell whether the change reached your site. The link's status then reads Apply not confirmed or Revert not confirmed, and a Check N unconfirmed button appears above the Accepted list.
Click it to read those pages on WordPress and settle each link's status. Nothing is sent to your site. The button only appears when there is something to check.
Settings
All settings for this tool live on the property's settings page. Open Actions β Rules from the Internal Links page, or go to the property's settings and use the sidebar.
Internal link rules
Maximum body links per page
10
Pages at this number are not used as link sources
Same anchor to the same page, site-wide
3
An anchor already used this often for a page is not suggested again
Paragraphs to skip at the top
1
No link is suggested in the opening paragraphs
Source pages shortlisted per target
25
How many related pages are read for each target. Lower this to cut the cost of a run.
Priority position from / to
4 to 20
The ranking range that makes a page a priority target
Minimum queries per page
3
Fewer than this counts as too little search data
Minimum impressions per page (28 days)
10
Fewer than this counts as too little search data
Each field shows its allowed range under it. A value outside the range is marked in red, and Save stays disabled until it is fixed.
Three rules cannot be changed:
One link per target page on each source page
Anchors are words already in the sentence β the text is never rewritten
Pages built with a page builder (Elementor and similar) are never edited
Advanced settings
Click Advanced at the bottom of the rules card to open these. The defaults suit most sites; change them when the suggestions are consistently too many, too few, or use link text you do not like.
Minimum sentence confidence (%)
50
10β95
How sure the AI must be that a sentence is a good place for the link. Lower it to see more suggestions; raise it to see only the clearest ones.
Minimum link text confidence (%)
50
0β95
How sure the AI must be of the words it picked as the link text. Unsure picks are usually words about a broader topic than the page. 0 turns this check off.
Minimum words in the link text
1
1β10
Set 2 or more to never get a one-word link text.
Maximum words in the link text
6
1β10
The longest link text the AI may pick. Also the most words you can choose when you edit a link text.
Reset numbers to defaults puts these four back. It does not clear your own rules below.
Your rules for the AI
Below the numbers, two boxes let you give the AI rules of your own, written as plain sentences:
Your rules for choosing the sentence β where a link may go.
Your rules for choosing the link text β which words may become the link.
Write one rule per line, up to 5 rules per box and 200 characters per rule. Your rules are added to the tool's built-in rules; they never replace them.
Examples of useful rules:
β Never use a broader topic as link text, e.g. "nuts" for a page about cashews.
β Brand names are always two words.
β Do not put a link in a sentence that is a question.
Rules that do not work well:
β Always suggest a link. (The AI still drops sentences that do not fit; a rule cannot force a link.)
β Write a better sentence. (The tool never rewrites your text, so the AI cannot follow it.)
A rule can make suggestions better or worse, and the app cannot tell which. Your rules are also sent with every question the AI is asked, so each run costs a little more β one rule of about 100 characters adds roughly 3%, and the estimate in the Find links dialog includes it. Try a new rule on a few pages first and compare the results before running it on many.

Link crawler
Under Crawling on the same settings page:
Requests per Second
1
How fast the crawler visits your pages. Range 1β3. Raise it for your own site; keep it low for a client's.
Max Chrome Tabs
3
How many pages load at once, within the rate above. Range 1β3.
Auto-Crawl Schedule
Weekly
How often the crawler runs by itself: Weekly, Bi-weekly, Monthly, or Manual Only
You can also start a crawl at any time from Actions β Run link crawler.
Use It From an AI Assistant
If you connected an AI app such as Claude or ChatGPT through the MCP Server, you can ask it to do this work for you. It reads the same lists and suggestions as this page and follows the same rules.
Ask in plain words, for example:
"Which pages on example.com need internal links first?"
"Find links for my five best priority targets. Tell me the cost first."
"Show me the new suggestions for /coffee-grinders and accept the good ones."
"Apply the accepted links to WordPress."
Find links costs money, and applying changes your live site. SEO Utils tells the AI to quote the cost before a run and to ask you before it writes to WordPress, and most AI apps ask you to approve each change. Check the cost and the list of links before you say yes.
Troubleshooting
Related Guides
Embedding DatabaseIndexing Dashboardπ€MCP Server (AI Integration)Last updated