Home / Tools / Internal Link Validator

Internal Link Validator

Paste a page's HTML and a list of your site's valid URLs to find internal links that don't match anything on your list.

ilv.log
waiting for input
Paste page HTML and your valid URL list, then click "Check links".

A genuine way to catch broken internal links without live requests

Actually checking whether a link returns a working page normally means sending a real network request to that URL and reading back its HTTP status code — something a browser-based tool can't reliably do for arbitrary external sites, since cross-origin requests are blocked by design for security reasons. For your own internal links, though, there's a fully honest workaround that doesn't require any live request at all: if you already know the complete, current list of valid URLs on your own site — which you do, since it's your site — you can simply compare every internal link found on a page against that known-good list, entirely offline.

This tool does exactly that. Paste a page's HTML, and separately paste your own list of valid URLs or paths (a sitemap's URL list works well here, or an export from your CMS), and it extracts every internal link from the page and checks each one against your provided list. Any link pointing somewhere not on that list is flagged, since it's either a genuine broken link — pointing at a page that was deleted, renamed, or never existed — or simply a URL your valid list is missing, which is also worth knowing about.

Getting a useful valid-URL list

The quality of this check depends entirely on how complete and current your valid-URL list is. A convenient source is your site's own XML sitemap, since it should already represent a maintained list of every page you want discoverable — you can extract just the URLs from a sitemap.xml file and paste them in here, one per line. Alternatively, many content management systems can export a full list of published page URLs directly, which serves the same purpose. Whichever source you use, keep in mind that this list needs to be paths or URLs specifically, one per line, without any surrounding XML tags or extra formatting for the comparison to work correctly.

Why paths are normalized before comparing

To avoid flagging harmless differences as broken links, this tool normalizes every URL down to its path before comparing — stripping the domain, protocol, and any trailing slash, so "https://example.com/about" and "/about/" and "/about" are all treated as the same page. This means the check focuses on whether the actual page exists in your list, not on cosmetic differences in how a link happens to be written, which would otherwise create a flood of false positives on a page that mixes relative and absolute internal links.

What this tool intentionally doesn't do

This check only validates against the list you provide — it has no way to verify that list itself is accurate or that a URL on it is actually still live on your server, since that would again require a real network request. It also doesn't check external links, mailto or tel links, or anchor-only fragment links, all of which are deliberately skipped since they're outside what a same-site valid-URL comparison is meant to catch. Use this as a fast, honest first pass for internal link hygiene, paired with periodically refreshing your valid-URL list so the comparison stays meaningful as your site changes.

Frequently asked questions

Does this tool actually visit the linked pages to check if they work?

No, and it's built specifically to avoid needing to. It compares links found in your HTML against a list of valid URLs you provide yourself, which avoids the cross-origin request restrictions that make live link-checking impossible for a browser-based tool.

Where should my 'valid URLs' list come from?

Your site's own XML sitemap is a convenient source, since it should already reflect your maintained list of live pages. A direct export of published URLs from your content management system works just as well.

Will this flag a link as broken just because it's written differently (with or without a trailing slash)?

No. URLs are normalized to their path before comparison, ignoring the domain, protocol and a trailing slash, so equivalent links written in different styles are correctly recognized as the same page.

Does this check external links too?

No, external links are intentionally left out of this check, since the whole point of this tool is validating internal links against a list you control. Checking external link health would require live requests to other sites, which isn't something a browser-based tool can reliably do.