serps.io
All free tools

Technical

Internal Link Extractor

Pull every link out of a page

In build

Give it a page URL and get every link in the HTML split into internal and external, each with its href, anchor text, rel attributes and whether it is followable, plus the duplicates and the links that only exist in navigation.

Get early access

What it returns

  • Every href in the document resolved to an absolute URL, split into same-site and off-site, with the count for each.
  • The anchor text on each link, the rel values attached to it (nofollow, sponsored, ugc), the target, and the alt text standing in for image links.
  • Duplicate destinations collapsed with a count, so a page linking the same URL from a menu, a breadcrumb and a sentence reads as one destination with three links.
  • Where each link sits: navigation, footer or body copy, because a link in a sitewide template means something different from one written into the page.

When this matters

A category page is supposed to pass authority down to twenty product pages, and it ranks while none of them do. Pulling the links shows the body of the page links to four of them, the other sixteen are only reachable through a paginated listing two clicks further down, and half the anchors read 'read more'. That is a brief someone can finish in an afternoon. The same export is how you check that a page you are about to publish actually links to the pages the outline promised it would.

How to answer this today

Site audit builds the link graph for the whole site rather than one page, which is what the question usually needs: orphan pages nothing points at, pages buried too deep, internal links aimed at redirects and errors, reported with the full rule set beside them. Dumping the links out of a single URL, including one you do not own and cannot crawl, is faster and needs no project set up first.

Site audit

Why this is harder than it looks

Links the HTML does not contain

Menus built after load, infinite scroll and anything rendered client side are missing from a plain fetch. The honest output states how the page was retrieved, so a short list reads as a fetch that saw half the page rather than a page with very few links.

Resolving the href correctly

Relative paths, protocol-relative URLs, a base tag, fragments and query strings all change what a link really points at. Two hrefs that look different can be the same destination, and two that look identical can differ by a trailing slash that the server treats as a separate URL.

Internal is a judgement call

Subdomains, country domains, a CDN host and a separate help site may or may not count as the same site, depending on what you are measuring. Whichever rule a tool picks has to be stated, because it moves every count on the page.

Rate limits

Extracting one page is a single fetch, and the obvious temptation is to call it in a loop and have a crawler. A per-visitor limit is what keeps this a page tool instead of an unmetered crawl pointed at a site that never agreed to be crawled.