e.g. example.com (no https://)
🔗

Paste HTML above and click Analyze to extract all links from the page

What is a broken link checker? A broken link checker finds links that lead nowhere. This one works on HTML you paste in: it pulls out every link, classifies it as internal, external, anchor, email or phone, and flags empty hrefs, href="#", http:// links and missing anchor text. It does not request the URLs, so it cannot confirm a 404.

What is a broken link checker?

A broken link checker is normally a crawler that requests each URL and reports the ones that return 404 or time out. This page works differently, and it is worth knowing that before you use it. A browser tab cannot freely request other websites, so the tool does not test live URLs. It reads the HTML you paste and audits the links inside it.

Paste the source of a page, type your domain so internal links can be told apart from external ones, and press Extract & Analyze Links. You get totals for all, internal, external, anchor and warning links, a filterable list, and a Potential Issues panel. The issues it can really detect from markup are: empty href values, href="#" placeholders, links with no anchor text, and links that use http:// instead of https://.

What it cannot do is tell you that /old-page returns a 404 today. For that, you export the list with Copy Links and run it through a crawler or your server logs. Used this way, the tool is a fast first pass that cleans up the obvious mistakes in your markup.

How to audit the links in a page

  1. Open the page you want to audit, view its source, and copy the HTML. Paste it into Paste Page HTML. Press Load Example HTML first if you want to see how the output looks.
  2. Type your domain, such as example.com without https://, into Your Site Domain. Absolute links that contain this text are counted as internal.
  3. Click Extract & Analyze Links. The stat cards show Total Links, Internal, External, Anchors and Warnings.
  4. Read the Potential Issues list. Each row names the link number and what is wrong, such as an empty href or a missing anchor text.
  5. Use the filter buttons (All, Internal, External, Anchors, Issues) to narrow the list, then check each flagged link in your source.
  6. Click Copy Links to copy the URLs in the current filter, one per line, so you can test them in a crawler or spreadsheet.

What this link checker does

Link classification

Every a element is labelled internal, external, anchor (#), email (mailto:), phone (tel:) or JavaScript. Relative paths count as internal.

Markup issue flags

Empty href, href="#", javascript: links, links without text or image, and plain http:// links are marked with a warning badge.

Domain-based internal detection

Enter your domain once and any absolute link containing it is counted as internal, even if it starts with https://www.

Filter and copy

Show only internal, external, anchor or issue links, then copy that group as a plain list of URLs.

Anchor text and rel display

Each row shows the visible anchor text and any rel value, so you can spot nofollow or sponsored links while you scan.

Built-in example

The example HTML includes an empty link, a placeholder, a JavaScript link and an http:// link so you can see every warning type.

Who uses it, and for what

  • Site owners before a redesign. Paste the old template's HTML and list every link it hard-codes. You get a checklist of URLs to redirect or retest.
  • Freelance developers reviewing a handover. Run the home page source through it to catch leftover href="#" buttons and empty links before the client sees the site.
  • Content editors cleaning a long post. Paste the article HTML, filter to External, and copy the list into a spreadsheet to check each source by hand.
  • SEO auditors starting a crawl. Use the export as a seed list, then compare it with a redirect trace in the Redirect Checker or a deeper view in the Anchor Text Extractor.

Tips for a useful link audit

  • Paste the rendered source from your browser's view-source or the saved page, not a template file with PHP or Liquid tags, or links built by code will be missed.
  • Enter the bare domain only. If you type your full homepage URL with a path, links to other pages on the site may not match.
  • Links added by JavaScript after the page loads are not in view-source. Copy the HTML from the browser's Elements panel if your site builds menus dynamically.
  • A link with no warning is not proven to work. The tool never contacts the target, so test the exported list separately.
  • Fix internal issues first. A dead link inside your own site hurts visitors and crawlers more than a stale outbound link.
  • Domain matching is a simple text match. A link to notexample.com.evil.net would be counted as internal for example.com, so scan the external list by eye as well.

Is it safe? Privacy and limits

The HTML you paste is parsed in your browser with the built-in DOMParser. It is not sent to a server, saved, or logged by the tool, and the tool never requests any of the URLs it lists. Clicking Copy Links writes to your own clipboard. Because nothing is fetched, a clean result does not prove that your links work or that your site is healthy.

Broken link checker FAQ

No. It reads the HTML you paste and lists the links in it, but it never requests them, so it cannot see a 404, 410 or timeout. A browser page is not allowed to freely fetch other sites, which is why a true status check needs a server or a desktop crawler. What it does catch is markup that is already broken: empty href attributes, placeholder links that point to #, links with no text, and links on http://. Use the copied list as input for a crawler that reports real status codes.

The warnings are about patterns in the markup, not live status. A link is flagged if its href is empty, if it is just #, if it uses javascript:, if it has no anchor text and no image inside, or if it starts with http:// rather than https://. Mailto and tel links are classified but not flagged. Each flagged link is numbered in source order, so you can find it quickly. Treat the list as a set of cleanup candidates, since some, like a deliberate JavaScript button, may be fine.

Relative paths such as /about or ../blog are treated as internal. Absolute links that start with http or // are internal only if they contain the domain you typed in the Your Site Domain box, and external otherwise. Links starting with # are anchors, and mailto: and tel: have their own types. If you leave the domain blank, every absolute link is external. The match is plain text, so subdomains count as internal, and look-alike domains can slip through. Skim the external list yourself.

No, it handles one block of HTML at a time. Paste the source of a single page, read the results, then repeat for the next page. For a whole-site audit you need a crawler that follows links and records each response. A reasonable workflow is to use this tool on your key templates, such as the header, footer and home page, because those links appear on every page, then use a crawler for the rest. You can also generate a sitemap to get a list of your pages to audit.

Because mixed or plain http links are worth reviewing even when they load. Most sites redirect http to https, so the link works but adds a redirect hop. On an https page, an http link to your own site is also a small inconsistency that is easy to fix. The flag does not mean the link is dead. For links to other sites, check whether an https version exists and update it if so. If the target only supports http, leave it and accept the warning.

Only links that exist as a elements in the HTML you paste. It will not find URLs hidden in JavaScript code, onclick handlers, or buttons that navigate without an href. Content added by scripts after load is missing from view-source, so copy the live DOM from your browser's inspector if that matters. Links inside forms, iframes and CSS are also outside its scope. Images are included only when wrapped in a link, and then the link counts as having anchor content.

Yes, it is free, with no account and no daily limit. The only limit is what your browser can handle: very large pages with thousands of links will still work, though the list may take a moment to draw. There is no file upload, since you paste text. Nothing is stored, so refreshing the page clears your results. If you want to keep them, use Copy Links and paste the output into a document or spreadsheet before closing the tab.

Fix the ones you can see in the markup first: replace empty hrefs with real URLs, swap placeholder # links, and add text or an alt attribute to image links. Then test the destinations. For moved pages, add a 301 redirect and confirm it with the Redirect Checker. For links that point to pages that no longer exist, remove the link or point to the closest live page. Finally, re-paste the updated HTML here to confirm the warnings are gone.