Internal and External Link Analyzer

Paste HTML and a base address to sort every link into internal, external, email, phone and on-page anchors.

Inputs stay on your device No sign-up Free to use
How this works

The tool runs in this browser. Your file or text is not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

Privacy details

Classify links controls

Showing an example. Edit to see your own.

Paste HTML with the links you want to sort, up to 200,000 characters. Nothing is opened or fetched.

The address the pasted page lives at. Relative links such as /guides/ are sorted against it. Leave it empty to list the addresses without sorting them.

Processed in your browser. Your inputs stay on this device.

How to use Internal and External Link Analyzer

  1. Paste the HTML that holds the links into the Page HTML box.
  2. Enter the address of the page the HTML came from in Base address. Relative links such as /guides/ are sorted against it.
  3. The table fills in as you paste the HTML.
  4. Read each row: the link text, the resolved target, the kind of link and any rel values. Then fix the repeated targets and the links that have no text.

Example: Internal and External Link Analyzer

Sort a navigation block from a guide page.

You add
Six anchors: /guides/, https://example.com/guides/cold-brew, a nofollow link to a news site, a mailto link, a #top anchor, and an empty href with target="_blank". Base address: https://example.com/guides/cold-brew.
You get
6 links: 2 internal, 1 external, 1 email, 0 phone, 1 on-page anchor and 1 with no address. No targets repeat, and 1 link opens in a new tab with no noopener or noreferrer in rel. The table resolves /guides/ to https://example.com/guides/ and lists the empty href as (no address).

Options

Base address
The base tells the sorter which host is yours. Without it, a relative link such as /guides/ cannot be called internal or external, so the table lists the address as written and marks it as needing a base.
rel column
The rel values are reported as written, not interpreted. The summary counts the links that open a new tab without noopener or noreferrer, because a page opened that way can reach the window object of the page that linked to it.

Supported inputs and limits

Up to 200,000 characters and 4,000 tags in one run, and the table shows the first 50 links while the counts cover every one. Anchors are read with a light parser, so a link built by JavaScript after load is not in pasted HTML, and markup inside a comment or a script block can still be counted. An anchor without its closing tag is skipped. The base address must be a complete http or https address; leave it empty to list the addresses without sorting them. Nothing is requested, so the page cannot report a status code, a redirect chain or a slow response, and it cannot say whether a target page still exists.

Where your input is processed

This tool processes your input in this browser. Your text and files are not uploaded to UseFreeTools. Check this tool's limits for anything it may save on your device.

What the sorter does with each address

Every anchor is read in the order it appears and sorted into internal, external, email, phone, on-page, script or empty. A relative address is resolved against the base you enter, so /guides/ becomes a full address and can be compared with the page host. Two things decide the sorting: the address itself and the base. The rel column adds what the page claims about the link, such as nofollow or noopener, and those values are reported as written rather than interpreted. Because nothing is requested, the table describes the markup you pasted, not the state of the network.

WHATWG HTML Standard, link types

Questions about Internal and External Link Analyzer

Does this check whether my links work?

No. It sorts the addresses written in the HTML you paste. It never requests an address, so it cannot report a 404, a redirect chain or a slow link. Use the server logs or a crawl to test status codes.

Why are my links not split into internal and external?

A base address is needed to know which host is yours. Enter the address the page lives at and run it again. Without a base the table lists the addresses as they were written and marks the relative ones as needing a base.

What does the rel column tell me?

It shows the rel values the anchor carries, such as nofollow, noopener or noreferrer. The summary counts links that open a new tab without noopener or noreferrer, which allows the opened page to reach the window object of the page that linked to it.

Why does a link I can see in the browser show as having no text?

The link text is read from the pasted HTML. A link whose text is added by JavaScript comes through empty, and so does one whose only content is an image with no alt attribute. The result counts those links so you can check them in the browser.

Project manager: Tony Hines · Content updated 29 September 2026 · Report a problem