New

MCP: talk to your Google Search Console data and SEO analysis in Cursor, Claude, and other AI tools.

See MCP

Start here

Search all docs
Browse all topics

Internal and external link health

Healthy links keep users on working URLs and avoid unnecessary redirect hops. We surface broken internal and external links (from sampled requests), external links that redirect, long pages with no outbound internal links, and indexable pages that no other crawled page links to.

What we look for

  • Broken internal links — sampled internal hrefs whose targets return error statuses (4xx/5xx), excluding HTTP 403.
  • Broken external links — sampled external hrefs that fail (4xx/5xx or request failures), excluding HTTP 403.
  • Redirecting external links — outbound links whose first hop returns HTTP 301 or 308.
  • Internal link redirects — internal hrefs that first return HTTP 301 or 308 before reaching a final URL.
  • No internal links — body content passes a length gate but no internal links were found in HTML.
  • Indexable page with no links in — the page returns HTTP 200, is not noindex, and no other crawled page links to it. Being listed in a sitemap is not a link. A link from the page to itself does not count. We skip the homepage, feeds, redirects, files that are not HTML, and utility or account paths such as login, cart, privacy, and thank-you.
  • Unclear or missing link text — internal links whose visible text is empty or an exact generic phrase (for example “click here” or “read more”). Empty text is often a logo, icon, or button with no words. Prefer short wording that names the destination.

What to do

Update or remove broken hrefs. Point external links to final URLs when stable. Add relevant internal links so important pages connect within your site graph. When a page is indexable but nothing else links to it, add one link from a related page that people already visit. Replace empty or generic link text with words that name the destination (for example “leather tote product page” instead of “click here”).

When external links can look broken but are not

External link checks are server-side automated HTTP probes, not full browser sessions. Some websites block or challenge crawler-like traffic and may return responses such as 403 Forbidden to scanners they do not allow. To reduce false positives, HTTP 403 responses are not treated as broken-link triggers in these checks.

That means some broken external links findings can still be false positives even when the destination still loads for regular visitors. We cannot reliably distinguish every anti-bot response from a genuinely broken URL. If you have verified the destination works as intended, you can permanently ignore that possibility in your workspace.

Example

A care guide can be in the sitemap and still be invisible in the site’s own navigation. Link to it from a page people already open:

<!-- On /products/leather-tote, before: the guide exists, but nothing links to it -->

<p>Full-grain leather that softens with use.</p>

<!-- After: one internal link from a related page -->

<p>
Full-grain leather that softens with use.
See our <a href="https://seoperception.com/guides/leather-care">leather care guide</a>.
</p>

Use correct internal paths and stable external URLs in your anchors:

<p>
See also our
<a href="https://seoperception.com/products/leather-tote">leather tote</a>
and care tips from
<a href="https://supplier.example.com/leather-guide">our supplier</a>.
</p>

<!-- Prefer descriptive anchors over vague phrases -->
<!-- Before -->
<a href="https://seoperception.com/products/leather-tote">click here</a>
<!-- After -->
<a href="https://seoperception.com/products/leather-tote">leather tote product page</a>

Technical details

Link checks use bounded sampling and stored crawl results—see How the crawler works. Indexable page with no links in is calculated after the crawl, from links we stored between your pages. It opens on the unlinked page, not on the page that should add the link. For external links, first-hop temporary redirects (for example 302, 303, 307) are ignored for reporting; permanent redirects (301, 308) are reported as redirect issues. For broken and redirecting external link signals, we skip well-known social and shortener hosts (for example X/Twitter, LinkedIn, Facebook, Instagram, and t.co) so those targets do not drive link-health issues; we still discover and list all outbound hrefs on the page as usual.