Free Internal Link Checker: Every Anchor Text and Nofollow on a Page

The free internal link checker lists every internal link on a single page — each one's destination URL, its exact anchor text, and whether it passes link equity or carries a nofollow. It reads the raw HTML the way a crawler first sees it, up to 500 links per page. No signup.

Charles DuncanReviewed by Charles Duncan, Co-founder & CTO

How does the internal link checker work?

Paste a URL and we fetch the page server-side, follow any redirects through to the URL that actually answers, and parse the raw HTML — the same bytes a crawler receives before any JavaScript runs. Every anchor is resolved against that final URL, counted as internal when its hostname matches yours once a leading www. is stripped, and marked nofollow when its own rel says so or the page carries a site-wide robots nofollow meta tag.

  1. Paste the page URL

    Any public page, yours or a competitor's. No account, no tag to install, no domain verification — the check runs from our side, not from your browser.

  2. We fetch it and read the HTML

    One live request per run, redirects followed. Fragment-only and javascript: hrefs are skipped because a crawler does not treat them as links either.

  3. Read the link table

    You get the internal count beside the page's total, then a row per internal link: where it points, the anchor text a reader actually sees, and follow or nofollow.

Internal link checker results: 72 internal of 86 total links, each row showing destination, anchor text and follow statusInternal link checker results: 72 internal of 86 total links, each row showing destination, anchor text and follow status
A real run against one of our own blog posts (9 August 2026): 72 internal links out of 86 total. The first 8 rows are shown; the counts are the full figures.

What features are free, and what does an account add?

Everything in this grid works right now, no sign-up. The marked features unlock when you create a free SEOmator account.

Every internal link, as an absolute URL

Relative hrefs are resolved against the page's final URL, so you compare real destinations instead of guessing what ../ resolved to.

The exact anchor text, per link

The visible clickable text, whitespace collapsed, up to 200 characters. Image links with no alt text come back empty — which is the finding.

Follow or nofollow on every row

Read from each link's rel attribute, and from the page-level robots meta tag that silently marks every link on the page nofollow.

Internal count beside the page total

Both counts are uncapped, so the ratio is accurate even on a page with several thousand links.

A live fetch on every run

Nothing is served from a stored index. You see the page as it is right now, including a change you deployed a minute ago.

Any public page, including a competitor's

There is no ownership check, so you can read a rival's internal linking the same way you read your own.

Free account

Site-wide audits, all 251 checks

Internal links checked on every page instead of one, with broken links and orphan pages surfaced across the whole site.

Free account

Issue history across crawls

See whether a broken internal link is new since the last deploy or has been sitting there for months.

Free account

Alerts when links start failing

Get told when internal links break, rather than remembering to re-check the page by hand.

Create a free SEOmator account to crawl the whole site, keep issue history and get alerts.

Sign up free

Expert review of the internal link checker

Charles DuncanReviewed byCharles Duncan · Co-founder & CTO

I built this to answer one question fast: does the link a crawler sees match the link a person sees? Because it parses raw HTML and runs nothing, the list you get back is close to the first pass Googlebot makes — and the gap between that list and your rendered navigation is usually where the problem is. Two limits I want stated plainly rather than buried. First, that same design is the tool's blind spot: links a framework injects after hydration simply are not in the HTML we read, and across the sites we audited in the first half of 2026, 31.4% had content present in the rendered DOM but missing from raw HTML. If a page's menu is client-rendered, this will undercount it — check it against the crawl test, which does run a headless render. Second, it reads one page. It cannot tell you which pages have no inbound internal links at all, and orphan pages are the internal-linking failure that actually costs traffic. One more thing worth knowing before you file a bug: we treat a subdomain as external, so links from your www site to blog.yoursite.com show up outside the internal count. That matches how link equity is usually modelled, but it is a judgement call, not a law.

View Charles's profile

How does our expert use this tool?

Charles DuncanCharles Duncan · Co-founder & CTO
  1. Assume something is broken, because it usually is

    Across the 100,000+ sites we audited in the first half of 2026, 57.3% had at least one critical failure in the Links category, and broken internal links were the most common one — a median of 14 per site. The links in your main navigation are fine. It's the ones inside three-year-old body copy that quietly 404.

  2. Run it as a rendering test, not just a link test

    Count the internal links in your header and footer by hand, then compare with what comes back. A page whose nav shows twelve links but returns four is telling you those eight only exist after JavaScript runs — which is a crawlability finding, not a linking one.

  3. Remember you're counting the outgoing side

    This tool counts links leaving the page. The evidence is about links arriving at one: Zyppy's study of 23 million internal links found URLs with 0–4 incoming internal links averaged 2 clicks from Google, while those with 40–44 averaged four times as many — reversing past roughly 45–50. Read every row you get back as one incoming link for some other page.

  4. Stop nofollowing your own links

    PageRank sculpting stopped working in 2009, when Matt Cutts explained that a nofollowed link's share is dropped rather than redistributed to the remaining links. If the scan shows nofollow on internal rows, it's almost always a stray template attribute rather than a decision anyone made. The exception worth keeping is a genuinely uncrawlable destination like a login or cart URL.

  5. Read the empty anchor rows first

    A blank anchor is normally an image link whose alt text is missing, so neither a crawler nor a screen reader gets anything from it. Those rows are the cheapest fix on the page — you are adding a description to a link that already exists.

  6. Scan a template, not the homepage

    The homepage is the one page everyone already links to. Run a deep page instead — a product detail page, a blog post from two years ago — because that is where the internal-linking debt actually sits. Then confirm the destinations resolve with the redirect checker.

On this page
  1. 01How do you check the internal links on a page?
  2. 02What does this checker read, and what does it miss?
  3. 03How many internal links should a page have?
  4. 04What makes anchor text work on an internal link?
  5. 05Should an internal link ever be nofollow?
  6. 06What do you fix first after a scan?
  1. What does this checker read, and what does it miss?

    It reads the raw HTML — the bytes the server returns, before a browser runs any JavaScript. That is a deliberate choice, and it is the single most important thing to understand about the output.

    I built it this way because it approximates the first thing a crawler does with your page. A search engine fetches the HTML, extracts the links it finds, and queues them. Rendering happens later, on a separate budget. A link that exists only after hydration is a link that gets discovered late, or not at all. So the list this tool returns is closer to "what gets crawled first" than to "what a visitor can click".

    The cost of that choice is a blind spot, and it is a big one. Across the same audit set, 31.4% of sites had content present in the rendered DOM but absent from the raw HTML. If your navigation is a client-rendered component, this tool will undercount it, and the honest response is to check the page against the website crawl test, which runs a real headless render and diffs the two.

    What it readsWhat it skips
    Server-rendered <a href>Links injected by JavaScript
    Relative paths, resolved#-only fragment links
    rel on each linkjavascript: hrefs
    Page-level robots nofollowAnything past 500 rows

    Four smaller rules are worth knowing before you file a bug report:

    1. A subdomain counts as external. We compare hostnames after stripping a leading www., so a link from example.com to blog.example.com sits outside the internal count. That matches how link equity is usually modelled across hosts, but it is a judgement call rather than a rule of physics.
    2. mailto: and tel: count as external. They leave the site, so they leave the internal number.
    3. Anchor text is truncated at 200 characters. Long enough for any real anchor; short enough that a link wrapping a whole paragraph does not flood the table.
    4. The list caps at 500 rows, the counts do not. On a page with 3,000 links you see the first 500 rows but the correct totals.
  2. What do you fix first after a scan?

    In this order, because it runs cheapest-and-most-certain first:

    1. Empty anchors. Add alt text to linked images. No judgement required, and it fixes accessibility at the same time.
    2. Unintended nofollow. If internal rows come back nofollow and nobody decided that, find the template or the meta tag and remove it.
    3. Links to redirects. Every internal link pointing at a URL that 301s adds a hop for both crawlers and users. Run the destinations through the redirect checker and repoint them at the final URL.
    4. Generic anchors on important destinations. Rewriting "read more" into the destination's topic costs one line and improves the strongest on-page signal you fully control.
    5. The count, if it is very low. A page with a handful of internal links needs inbound links from elsewhere on the site more than it needs outbound ones. That is a site-level fix.

    That last point is where a single-page check runs out of road, and I would rather say so than pretend otherwise. This tool reads one page. It cannot tell you which pages have no inbound internal links at all — and orphan pages are the internal-linking failure that actually costs traffic. Across the sites we audited in the first half of 2026, the sites failing on crawlability carried a median of 8% of their pages as orphans. Nothing you can see from one URL will surface that.

    For the site-level view — every page crawled, broken internal links listed, orphans identified, click depth measured — run a full site audit, or browse the rest of the free SEO tools if you want to check one specific thing first.

    Source: SEOmator crawling and audit data, January–July 2026 (100,000+ websites audited, 50M+ pages crawled).

Who is this internal link checker for?

Agencies auditing a page before the pitch

You need evidence in the deck, not an assertion. Scan the client's key landing page and show the internal link count, the nofollow rows and the empty anchors — then widen it with a full site audit.

Developers shipping a navigation change

A framework upgrade or a new menu component can move links out of the server-rendered HTML without anyone noticing. Scan the page before and after the deploy and compare the internal count.

Writers checking a post they just published

Confirm the links you added made it into the HTML, that the anchor text reads like the page it points at, and that nothing is silently nofollowed by a CMS setting.

Why use SEOmator's internal link checker?

It shows the crawler's view, not the browser's

Raw HTML, no JavaScript executed. That is a deliberate choice: it is the only way to see which links exist before rendering, which is the version a crawler meets first.

Anchor text on every row

Most free link checkers return a list of URLs. The anchor text is the part that tells a search engine what the destination is about, so it belongs in the table.

The rel value, including the one you didn't set

A page-level robots nofollow meta tag marks every link on the page, and it is invisible unless you read the head. We fold it into each row.

Free, with no sign-up wall

The full table renders on the page. No credit card, no email gate, no trial that expires after three scans.

Honest about its scope

One page, raw HTML, subdomains counted as external, 500 rows listed. Every limit is stated here rather than discovered after you have trusted a number.

Part of a full toolkit

One of SEOmator's free SEO tools, alongside the crawl test, the redirect checker and a complete site audit.

The free toolkit behind real SEO workflows

free SEO tools, none of them behind an account
37
people ran SEOmator's free tools in 2026
500K+
no sign-up, no credit card, no expiring trial
$0

Frequently Asked Questions Internal Links

  • What is the purpose of internal linking?

    Internal links do three jobs at once. They give search engines a path to discover pages, which is how a page gets crawled and indexed in the first place. They pass link equity between pages, so a page nobody links to internally competes with less weight behind it. And their anchor text tells a search engine what the destination page is about, which is why a link labelled with a topic outperforms one labelled 'read more'.

  • How many internal links should I use on a page?

    There is no published sweet spot for links going out of a page, and Google dropped its old 'around 100 links' guideline years ago without replacing it with a number. The evidence that does exist is about links coming in: Zyppy's study of 23 million internal links found that URLs receiving 40 to 44 internal links averaged four times the Google clicks of URLs receiving 0 to 4, with the relationship reversing past roughly 45 to 50. So treat your outgoing count as a shape rather than a score — six internal links on a long article means a dead end, and 300 usually means a mega-menu is being counted.

  • Can too many internal links hurt my SEO?

    Indirectly, yes. Link equity is divided among the links on a page, so 300 links each pass a fraction of what 40 would. Google dropped its old roughly 100-links-per-page guideline years ago and no hard limit replaced it, so the practical risk is dilution and navigation clutter rather than a penalty. If a scan returns far more links than the page appears to contain, the extra ones are almost always a mega-menu or footer repeated in the HTML.

  • Should I use exact match anchor text for internal links?

    Use descriptive anchor text, and do not force every link to the same exact phrase. Internal anchors are one of the clearest signals you control for telling a search engine what a page is about, so the anchor should read like the destination's topic. Repeating one identical phrase across hundreds of internal links looks engineered; varying it naturally across close variants does the same job without that risk.

  • How can I track the effectiveness of my internal linking strategy?

    Track the destination pages, not the links. Watch impressions and average position for the linked page in Google Search Console before and after you add internal links to it, and check in your crawl data whether its click depth from the homepage dropped. A page moved from four clicks deep to two is the change most likely to show up in traffic.

  • How do I track internal links?

    For a single page, run it through this checker: you get every internal link with its anchor text and follow status in one pass. For a whole site you need a crawler, because the questions that matter across a site — which pages have no inbound internal links, which internal links return a 404, how deep each page sits from the homepage — cannot be answered from one page's HTML. Google Search Console's Links report also lists your most-linked internal pages, though it lags by several days.

  • What are internal links on a website?

    An internal link is a link from one page on a domain to another page on the same domain. A link to a different domain is an external or outbound link. The distinction matters because internal links are the ones you fully control: you decide which pages get linked, how often, and with what anchor text. This tool classifies a link as internal when its hostname matches the page's hostname after a leading 'www.' is removed, which means a link to a subdomain such as blog.example.com is counted as external.

  • What does an internal link look like?

    In HTML it is an anchor element whose href points at a path or a URL on the same domain, with the visible clickable text between the tags — that text is the anchor text. A link can also carry a rel attribute; rel="nofollow" tells search engines not to pass link equity through it. This checker reads all three parts of each link: the resolved destination, the anchor text, and the rel value.

  • How can I check the external links on a page?

    This page lists internal links only, but the counts give you both numbers: subtract the internal count from the page total and the difference is external. Mailto and telephone links are counted as external, since they leave the site. If you want external links listed row by row with their anchor text and rel values, run the page through a full site audit instead, which reports internal and external links together.

  • What is the difference between anchor text and internal links?

    They are not alternatives — anchor text is part of a link. The internal link is the connection between two pages on your site; the anchor text is the visible wording that link is wrapped in. The link creates the crawl path and passes equity, and the anchor text describes what is at the other end. That is why an internal link with a blank or generic anchor still helps discovery but tells a search engine almost nothing about the destination.

Related guides

Deeper reading from the SEOmator blog on what this tool measures.

Lawyer inspecting a glowing scale of justice among columns of law books, illustrating SEO audits for lawyers

6-Step SEO Audit for Law Firms: Complete Guide (2026)

An SEO audit for law firms covers keyword research, on-page optimization, technical health, local SEO, backlinks, and competitor analysis. With 87% of clients using Google to find lawyers, regular audits are essential for maintaining visibility and generating qualified leads.

Get started to see how your website performs.

Elevate your online presence with our tool: Get found, Get ahead

Pricing