Broken Link Checker Tool

Paste HTML or text to extract links, detect invalid URLs, duplicate links, empty links, relative links and optional live status checks.

🔒 Checked in your browser
Used to resolve relative links such as /about/ or ../page/.
Live check may be limited by browser CORS rules.
Supports HTML links such as <a href="">, image src, script src, CSS href and plain URLs.
Status will appear here.
0 Total Links
0 Unique Links
0 Issues
0 External
No report generated yet

SEO Checks

Paste HTML or text and click Analyze Links to see checks.
Fix broken links to improve user experience and crawl quality.
Browser live checks may show Unknown when blocked by CORS.
Use a server-side crawler for final production-level broken link audits.

About This Tool

Broken Link Checker is a free online SEO and webmaster tool that helps you find possible link problems inside pasted HTML or text.

You can extract links from anchor tags, image sources, script files, stylesheet links and plain URLs. The tool checks invalid URLs, empty links, relative links, duplicate links, internal links, external links and asset links. It can also try optional live status checks, although browser-based checks may be limited by CORS rules on some websites.

This tool is useful for website owners, SEO specialists, bloggers, developers and webmasters who want to quickly review pages for broken or problematic links.

How to Use Broken Link Checker

1. Paste your HTML source or text containing links into the input box.
2. Add a Base URL if your page contains relative links such as /about/ or /images/logo.png.
3. Choose whether to include internal links, external links and asset links.
4. Click Analyze Links to check link structure.
5. Click Live Check if you want the browser to try checking HTTP status.
6. Review the table, SEO checks and report.
7. Copy or download the report if needed.

Privacy Note: This Broken Link Checker works directly in your browser using JavaScript. Pasted HTML or text is not uploaded to our server. Live status checks are requested by your browser and may be blocked by CORS.

Frequently Asked Questions

Is this Broken Link Checker free?

Yes. This Broken Link Checker is free to use and does not require signup.

Can this tool check live HTTP status?

Yes, it can try live status checks from your browser. However, some websites block browser checks because of CORS, so those links may show as Unknown instead of confirmed broken.

Can this tool check relative links?

Yes. Add a Base URL and the tool will resolve relative links such as /about/ or /static/image.png.

Does this tool upload my HTML to the server?

No. The link analysis runs directly in your browser using JavaScript. Your pasted HTML or text is not uploaded to our server.

`; includeInternalOption.checked = true; includeExternalOption.checked = true; includeAssetsOption.checked = true; showDuplicatesOption.checked = true; normalizeHashOption.checked = true; skipMailTelOption.checked = true; autoAnalyzeOption.checked = true; timeoutOption.checked = true; analyzeLinks(true); } function clearTool() { baseUrlInput.value = ""; checkModeSelect.value = "structure"; htmlInput.value = ""; includeInternalOption.checked = true; includeExternalOption.checked = true; includeAssetsOption.checked = true; showDuplicatesOption.checked = true; normalizeHashOption.checked = true; skipMailTelOption.checked = true; autoAnalyzeOption.checked = true; timeoutOption.checked = true; currentLinks = []; brokenReport.value = ""; renderTable([]); updateStats([]); updateText(brokenResultNote, "No report generated yet"); warningList.innerHTML = ""; addWarning("Paste HTML or text and click Analyze Links to see checks.", "warn"); clearStatus(); htmlInput.focus(); } function autoAnalyze() { if (autoAnalyzeOption.checked) { analyzeLinks(false); } } const liveFields = [ baseUrlInput, htmlInput, includeInternalOption, includeExternalOption, includeAssetsOption, showDuplicatesOption, normalizeHashOption, skipMailTelOption ]; liveFields.forEach(function (field) { field.addEventListener("input", autoAnalyze); field.addEventListener("change", autoAnalyze); }); analyzeLinksBtn.addEventListener("click", function () { analyzeLinks(true); if (checkModeSelect.value === "live") { liveCheck(); } }); liveCheckBtn.addEventListener("click", liveCheck); copyReportBtn.addEventListener("click", copyReport); downloadReportBtn.addEventListener("click", downloadReport); sampleBrokenBtn.addEventListener("click", loadSample); clearBrokenBtn.addEventListener("click", clearTool); clearTool(); })();