Skip to main content

Internal Link Audit

What it does

The Internal Link Audit parses pasted HTML, lists every <a href> element on the page, and tags each with anchor text, rel attribute, target attribute, and an internal/external/anchor/mailto/tel/empty classification (set the site host to enable internal vs external bucketing). It also flags target="_blank" links that are missing rel="noopener", a small security and performance issue that adds up across many such links. It sits in our SEO tool suite alongside the other page-level checkers.

Common situations

You are auditing a long-form article and want to verify the internal linking strategy is what you intended: pillar pages linked appropriately, sibling content cross-referenced, no orphan paragraphs. The link audit gives you the link inventory at a glance, which is faster than scrolling through reading.

A page is performing poorly despite good content, and you suspect the internal linking is the problem. Run the audit. Pages with very few internal links (fewer than 3-5 outbound) usually under-perform because they are not passing any equity to other pages, and they are not creating the linking density Google rewards.

You are reviewing content for security issues. Every target="_blank" link without rel="noopener" is a small reverse tabnabbing risk; the audit flags them in seconds. Useful when the content team is producing new articles regularly and security review is a part of the process.

A piece of content you wrote has been edited by someone else and you want to verify they haven’t accidentally removed the internal links, changed sponsored links to organic ones (rel mismatches), or introduced links to questionable destinations.

You are auditing a competitor’s article structure to understand their internal linking strategy. The audit shows their full link graph from a single page, which is useful for understanding why their content cluster is performing while yours is not.

What you need to know

Links inside a page do three things: they help users find related content, they tell search engines about topical relationships, and they pass authority (PageRank, in technical terms) from the linking page to the destination. Understanding what each link is doing is the foundation of an internal linking strategy.

The audit classifies each link by destination type:

  • Internal: same host as the page being audited. These pass authority within the site and are how internal linking strategy compounds.
  • External: different host. Authority flows out of the site to external destinations, sometimes desirable (citations, references), sometimes incidental.
  • Anchor: starts with #. Same-page navigation; not authority-passing.
  • Mailto / tel: protocol links for email and phone. Functional, not search-relevant.
  • Empty: href="" or missing href. Broken; should be removed.

The rel attribute carries hints about the relationship between the linking and destination pages:

  • nofollow: don’t pass authority to the destination. Use for paid placements (legacy) and untrusted user-generated content (legacy). Google’s 2020 update reframed nofollow as a hint rather than a directive, but it still signals “this link is not an editorial endorsement”.
  • sponsored: paid link. Google introduced this in 2020 to replace nofollow on advertising and affiliate placements. More precise than nofollow.
  • ugc: user-generated content. Used for forum posts, comments, etc. Replaces nofollow in those contexts.
  • noopener: closes the security loophole when opening in a new tab. Required when target="_blank" is set and the destination is untrusted.
  • noreferrer: in addition to noopener, hides the referrer from the destination. Use sparingly.

The target attribute controls how the link opens. _blank opens a new tab, which is appropriate for external destinations or document downloads but generally annoying for internal navigation. Modern best practice: open external links in new tabs (with rel="noopener"), keep internal links in the same tab.

What good internal linking looks like in practice: every page should have at least 3-5 contextual outbound links to related content, anchor text should describe what the user will find at the destination (not “click here”), and links should flow naturally with the content (not stuck in a “Related Posts” box at the end). The audit reveals the structure; turning that structure into an editorial discipline is separate work.

Frequently asked questions

How many internal links should a page have?

3-5 minimum, no hard maximum. The pattern that compounds is “every page links to a few related pages, every related page links back”. This creates the dense internal linking graph that search engines reward. Pages with no internal outbound links are dead ends; pages with too many become noise.

Does anchor text matter for SEO?

Yes. Anchor text is one of the strongest signals for what the destination page is about. “Click here” tells search engines nothing; “free SEO audit tool” tells them the destination is about SEO audits. Use descriptive anchor text consistently.

What’s the difference between nofollow, sponsored, and ugc?

All three tell Google not to pass authority. nofollow is the legacy generic version, sponsored is for paid placements (advertising, affiliate links), ugc is for user-generated content (comments, forum posts). Google reads them all but sponsored and ugc are more precise, and using them correctly helps Google understand the link’s nature.

Should I open external links in new tabs?

Convention is yes: external links open in new tabs (target="_blank") so users don’t lose their place on your site. Always combine with rel="noopener" for security. For internal links, default to same-tab navigation; use new-tab only when the linked content is a tool, document, or aside.

What is rel=”noopener” for?

Security. target="_blank" without noopener lets the new tab access the original page via window.opener, allowing a malicious destination to manipulate the source. noopener closes that loophole. Always combine with target="_blank".

How does the audit decide internal vs external?

It compares the link’s host against the “site host” you specify. So setting the host to example.com classifies links to example.com/page and https://example.com/page as internal, links to othersite.com/page as external. Subdomains (blog.example.com) are treated as external by default; set them to internal manually if relevant.

Are the rel attributes case-sensitive?

No. nofollow, NoFollow, and NOFOLLOW are all parsed correctly by browsers and search engines. The audit normalises case so the classification is consistent regardless of how the attributes are written.

Should I link to high-authority external sites for SEO?

There is some evidence that linking to authoritative sources signals editorial quality and helps the page rank. The mechanism is unclear and the effect is small. The honest answer: link out when the linked content genuinely helps the reader, don’t link out as an SEO trick.

Common problems

Problem: Audit shows many empty-anchor links.

Usually icons or images inside <a> tags where no surrounding text exists. The fix is to add an aria-label to the link or alt text to the image inside it. Empty anchor links are an accessibility issue and a small SEO miss (no anchor text signal).

Problem: External links to a partner site are flagged as missing rel=noopener.

Add rel="noopener" to all target="_blank" links regardless of trust level. Even known partners can be compromised; the security cost of skipping noopener is real, and the cost of adding it is zero.

Problem: Internal linking strategy looks good but Google isn’t picking it up.

Internal links are read on every recrawl, but their effect compounds slowly. New internal linking takes weeks to months to influence rankings noticeably. If links have been in place for a quarter and the affected pages still aren’t lifting, the problem is usually the destination pages, not the links.

Problem: The audit shows lots of nofollow links the editorial team didn’t add.

WordPress comment plugins automatically add nofollow ugc to comment links. Some forum themes do the same to forum-post links. This is correct behaviour. The flag is informational; verify it matches expectations rather than indicating a problem.

Problem: Anchor text is the URL itself instead of descriptive text.

Common when content is pasted from a Word doc or generated by tools that auto-link URLs. The fix is editorial: every link should have meaningful anchor text. URL-as-anchor is a small SEO miss and a usability one (URLs don’t describe destinations).

Tips

  • Audit important pages periodically. Internal linking drifts as content is edited; what was a strong cluster becomes a thin one over time.
  • Use descriptive anchor text. “Free SEO audit tool” is much better than “click here” or “read more”.
  • Open external links in new tabs with rel="noopener". Keep internal links in the same tab.
  • Avoid linking the same anchor text to two different destinations on the same page, which is confusing for users and unhelpful for search.
  • Link sparingly to the same destination. Multiple links to the same page from one source page give diminishing returns; pick the most contextually meaningful link and use that one.

Related tools in this suite

The Broken Link Checker is the destination-side companion: the link audit tells you what’s linked, the broken link checker tells you whether those destinations actually return 200. The Page SEO Audit summarises link counts and internal/external split as part of its overall report.

What this looks like at scale

For a single page, the audit is fine. For a content site, internal linking should be part of the editorial workflow and structurally enforced: pillar pages prominently linked from every related child page, sibling pages cross-referenced consistently. The WP Beacon Plugin tracks internal linking density and orphan pages across an entire site.

Take it further

If a content set’s internal linking is sparse and you’re seeing the resulting weak performance, a structured internal linking pass (pillar pages, topic clusters, intentional cross-references) is the kind of work that lands in a WordPress development engagement.