Internal link checker

Check one page and see every link on it, what the anchor text says, and which internal links still load. Free, no signup, nothing stored.

One page. I fetch it and list every link in the HTML that page sends.

Paste a URL above, or .

How to check the links on one page

  1. Paste the URL of one page into the box above. Any public page works, including a competitor's.
  2. Press Check page links. The page is fetched once, its HTML is read the way a browser reads it, and every link comes back with the facts about it.
  3. Read the two outputs separately. The structure score covers what is in your HTML, the status counts cover the internal links that were actually fetched. Export the CSV if you want to work through them.

What one page can and cannot tell you

One page tells you a lot. It tells you where every link on it goes, whether the anchor text describes the destination or just says "click here", whether a link opens in a new tab, which links carry nofollow, and whether the internal ones still load. That is the whole outgoing side of the page, and it is the side you control while you are editing it.

It cannot tell you the incoming side. A single page has no way to know which of your pages have nothing linking to them, how many clicks a page sits from your home page, or how many other pages link to the one you are looking at. Those are facts about your whole site, and the only way to get them is to visit every URL. A crawler such as Screaming Frog does that job. This tool is the fast answer for one page, not a replacement for one.

The structure score is mine. It is built only from things that are visible in your HTML, so it can close to exactly 100 and every point taken off names the rule that took it. It is not comparable to any other tool's number, and it does not predict rankings. Whether your links actually load is reported separately as counts, because only a sample of them gets fetched and a score over a sample would be a lie.

How we read your page

The page is fetched once with an ordinary browser request, redirects are followed by hand, and every link is resolved against the address the page finally landed on rather than the one you typed. If the page carries a base element with an href, that wins instead, the same way a browser handles it.

Character encoding is sniffed rather than assumed. A byte order mark comes first, then the charset in the Content-Type header, then a meta charset near the top of the document, then UTF-8. If that decode produces a flood of unreadable characters, the page is read again as windows-1252. The encoding that won is printed with the results, because getting this wrong turns every anchor text into nonsense and most tools never mention it.

Script, style, template and inline SVG content is blanked out before anything is counted, so a URL sitting inside a JSON payload or a JavaScript string never becomes a phantom link. Content inside noscript is treated the way a browser with scripting on treats it, as plain text rather than markup, so those links are reported on their own and never mixed into the totals. If a comment is opened and never closed, everything after it is ignored, exactly as a browser would, and the results say so instead of reporting a confident zero.

Links that JavaScript adds in the browser are invisible here. They are not in the HTML your server sent, so nothing that reads that HTML can see them, including search engine crawlers on the pass before rendering. If your navigation is built client side, check the rendered DOM in your browser as well.

Frequently asked questions

What does this internal link checker do?

You give it one page URL. It fetches that page, reads the raw HTML, and lists every link in it: where the link points, what the anchor text says, whether it carries nofollow or opens in a new tab, and roughly where on the page it sits. It then checks a sample of the internal links to see whether they still load.

Can it crawl my whole site?

No. It reads one page at a time. A single page cannot tell you which of your pages have nothing linking to them, how many clicks a page sits from your home page, or how many pages link to the one you are looking at. Those questions need a crawler that visits every URL, such as Screaming Frog.

Why is the structure score kept apart from the broken link count?

Because they are different kinds of fact. The score comes only from what is visible in the HTML, so it is complete and every point taken off names the rule that took it. The status check only covers a sample of your internal links, so folding it into a score would let a page with broken links in the unchecked remainder read as perfect. Counts stay counts.

Do you see links that JavaScript adds?

No. This reads the HTML your server sent. If a framework adds links in the browser after the page loads, they are not in that HTML, so neither this tool nor any crawler that skips rendering will see them. Links inside script tags, template tags and inline SVG are skipped for the same reason.

Do you store the URL I paste?

No. The page is fetched, the results go to your screen, and the URL is forgotten. Nothing is logged and nothing is kept.

More free tools

Bulk broken link checker Paste up to 500 URLs and see which are dead, redirected, blocked, or fine, each with its real status code.