Skip to content
SCRAWL
Technical SEOFaisal Y

Broken link checker: find 404s on a page, check URL lists in bulk, and fix the right links

A broken link is a link that leads nowhere useful. Usually that means a 404, sometimes a 410, a server error, or a site that doesn't answer at all. Visitors hit a dead end, and crawlers spend a request on a page that isn't there.

Use the free tool
Broken Link Checker
Find 404 and redirect errors on any page in seconds.

A broken link is a link that leads nowhere useful. Usually that means a 404, sometimes a 410, a server error, or a site that doesn't answer at all. Visitors hit a dead end, and crawlers spend a request on a page that isn't there.

There are two different jobs hiding behind "404 checker," and they need different tools. One is "which links on this page are broken?" The other is "which of these 150 URLs are dead?" Scrawl has a tool for each: the Broken Link Checker for the first, and the Bulk Status Checker for the second. This guide covers when to use which, how to read the results, and the order to fix things in.

What counts as a broken link

The HTTP status code tells you what happened when the link was requested.

  • 2xx (usually 200). The page loaded. Not broken.
  • 3xx (301, 302, 307, 308). The URL redirects somewhere else. Not broken, but worth updating if it's your own link.
  • 404 Not Found and 410 Gone. The page doesn't exist. This is the classic broken link.
  • Other 4xx, like 401 or 403. Access is refused. Sometimes that's a real problem, sometimes the server is just blocking automated requests.
  • 5xx. The server failed. Could be temporary, could be a dead site.
  • No response. Timeouts, DNS failures, SSL errors. The link may as well be broken for anyone clicking it.

Google's page on how HTTP status codes affect its crawlers says it treats all 4xx errors except 429 the same way: the content doesn't exist, and URLs that were indexed get dropped over time. It also says a page that returns 200 but shows an error message can be flagged in Search Console as a soft 404. So "the server said 200" isn't the whole story.

Job one: find broken links on a page

Use the Broken Link Checker when you have a page and want to know whether its outgoing links still work. Here's what it does, step by step:

  1. It fetches the page's HTML and pulls out every <a> link. It skips mailto:, tel:, javascript: links and empty # links, since those can't be checked.
  2. It checks the rest in batches and shows progress as it goes. Each link gets a HEAD request, with a GET fallback if the HEAD request fails, and an 8-second timeout.
  3. It follows redirects (up to five) and records the status of where the link ends up, plus the final URL.
  4. It marks a link as broken if it ends on a 4xx or 5xx status, or if there's no response at all (timeout, DNS, SSL, or connection error).

You can choose to check internal links, external links, or both. "Internal" means the same hostname as the page you entered, so www.example.com and example.com count as different hosts.

The results come with filters (broken, redirects, working, internal, external, timeouts), a search box, and sorting. Expanding a broken row shows a short hint for 404s, 403s, server errors, and timeouts. There's a Copy Fix List button that copies each broken link's anchor text, URL, status, and a suggested action, which is handy for pasting into a ticket. You can also export everything, or just the broken links, as CSV.

Some limits to know about:

  • One page per run. It doesn't crawl your site. Run it on your important pages one at a time.
  • Raw HTML only. Links that only appear after JavaScript runs won't be found.
  • Every occurrence is checked. If the same link appears in the header and the footer, it shows up twice.
  • Some servers refuse bots. A site that blocks automated requests or rejects HEAD requests can show a 403 or 405 even though it loads fine in a browser. Open those in a browser before you remove them.

Job two: check a list of URLs in bulk

Use the Bulk Status Checker when you already have the URLs and want each one's status. Typical lists are an export from Search Console, old URLs from before a migration, a sitemap, or a list of backlink targets.

Paste one URL per line, up to 200 per run. Include https://, since a URL without a protocol is tried as http://. For each URL it sends a HEAD request, retries with GET if the server answers 405 or 501, and waits up to 10 seconds.

The key difference from the Broken Link Checker: the bulk tool doesn't follow redirects. It reports the first response. A 301 shows up as a 301, with the redirect target next to it. That's what you want when you're auditing old URLs, because "does this old URL redirect, and where to?" is the whole question.

You get a summary (total, 2xx OK, redirects, errors and failures, average response time) and a row per URL with flags:

  • 4xx and 5xx responses are flagged as errors. A 410 is shown as information instead, since "permanently removed" is often intentional.
  • 301 and 308 are noted as permanent redirects, with a reminder to update source links.
  • 302 and 307 get a warning to check that the temporary redirect is intentional.
  • Slow responses get a warning over 3 seconds and an error over 5.
  • Plain http URLs get a warning.

You can export the full report or just the rows with issues, as CSV or as a filterable Excel file.

A worked example

I ran the Broken Link Checker's extraction step on our own Google index checker guide. It found 53 links on the page, all of them checkable. Most were internal: the nav, the footer, related posts, and several repeats of the link to the Google Index Checker tool. Two were external links to Google's documentation.

That breakdown shapes how to read the results. The header and footer links are the same on every page, so if one of those were broken, the fix belongs in the site template, not in this article. The body links are specific to this page. The two Google doc links are the ones most likely to break over time, because Google moves its documentation around and we don't control it.

Now take a hypothetical. Say one of those Google links came back 404. The fix is to find where the doc moved, update the link, and re-run the check. If Google had retired the page with no replacement, I'd remove the link and reword the sentence instead of linking to something loosely related.

The bulk tool fits a different moment. Say Search Console's Page indexing report lists a few dozen URLs under "Not found (404)." Export them, paste them into the Bulk Status Checker, and sort by status:

  • Still 404, and there's an obvious replacement page. Add a 301 to that page.
  • Still 404, and the content is gone for good. Leave it as a 404, or return 410. That's the correct answer for a page that shouldn't exist.
  • Now 301. Someone already fixed it. Check that the target is the right page.
  • Now 200. The page is back. Find out why it was missing so it doesn't happen again.

How to read the results

404 or 410 on your own site. You control both ends, so fix it now. Update the link to the right URL, or remove it.

404 on an external site. Look for the page's new address. If you can't find one, remove the link or swap in a source that says the same thing.

403 or 405. Open it in a browser. If it loads, the server is blocking automated checks and the link is fine for people. If it doesn't, treat it as broken.

5xx. Run the check again later. A single 500 might be a hiccup. A link that fails for days is probably dead.

Timeout or DNS error. A DNS failure usually means the domain is gone. Timeouts can be a slow site. Re-check before you act.

Redirects on your own links. These aren't broken, but it's cleaner to point internal links straight at the final URL. If you want to see every hop in a chain, use the Redirect Chain Checker.

Fix in this order

  1. Broken internal links on important pages. Pages that get traffic or that you want to rank. You control these, and each fix takes minutes.
  2. Broken links in templates. A dead footer or nav link is broken on every page at once. One fix covers the whole site.
  3. Your own URLs that other sites still link to. If a removed page still gets links or traffic, a 301 to the closest relevant page keeps those visitors. Don't redirect everything to the homepage. Google can treat that as a soft 404.
  4. Broken external links in your content. Update or remove them, starting with your most visited pages.
  5. Everything else. Old, low-traffic pages can wait for a regular cleanup.

Mistakes that waste time

Redirecting every 404 to the homepage. It hides the problem from you without helping visitors.

Treating every 4xx as dead. Bot blocks produce 403s on perfectly good pages. Check by hand first.

Fixing the article when the template is broken. If the same dead link shows up on every page you scan, it's in the header, footer, or sidebar.

Checking once and forgetting. External sites change. Re-run the check on your important pages every few months.

WordPress sites

If your site runs WordPress, the WordPress Broken Link Checker can save you running pages one by one. It reads up to 50 published posts and pages through the WordPress REST API and checks the first 20 links in each.

FAQ

What is a broken link checker?

A tool that requests each link on a page and reports the ones that fail, usually with a 404, another 4xx or 5xx status, or no response at all.

How do I find 404 errors on my website?

For the links on one page, run the page through the Broken Link Checker. For a list of URLs, such as a Search Console export of "Not found (404)" pages, paste them into the Bulk Status Checker.

Can I check 404s in bulk?

Yes. The Bulk Status Checker takes up to 200 URLs per run, one per line, and returns each URL's status code and redirect target. You can export the results as CSV or Excel.

Does the Broken Link Checker crawl my whole site?

No. It checks the links on one page per run. Use it on your most important pages, or use the Bulk Status Checker for a list of URLs.

Why does a working link show as broken?

Some servers block automated requests or reject HEAD requests and return 403 or 405. Open the link in a browser. If it loads, it's fine for visitors.

Should I redirect all my 404 pages?

Only when there's a relevant replacement page. If the content is gone for good, a 404 or 410 is the right response. Redirecting everything to the homepage can be treated as a soft 404.

What's the difference between a 404 and a 410?

404 means not found, 410 means gone on purpose. Google's documentation says it treats all 4xx errors except 429 the same way.

Do broken links hurt SEO?

They waste visits and crawl requests, and a broken internal link means Google can't follow it to the page you meant. Fixing them on important pages is quick work that's worth doing.

Is the Broken Link Checker free?

Yes. Paste a URL and run it.

broken link checker404 checkerbulk status checker

Related Articles

Technical SEO

Site migration SEO checklist

Most migrations don't fail because someone forgot a "best practice." They fail because one boring th…

Technical SEO

Technical SEO audit checklist

Most technical audits start in the wrong place. Someone opens a crawler, exports 4,000 "issues," and…

Tool Guides

SEO readiness checker: score any URL, fix what matters

Most technical audits start with a 4,000-row crawl export. You need something faster: is this one UR…

Technical SEO

How to Check if a Page Is Indexed by Google (and Fix It If Not)

Pages outside Google's index cannot rank. Learn what "indexed" means, how to confirm status in Searc…

Technical SEO

What Is PageRank in 2026? How Google Link Authority Works (and How to Check It)

Google retired public PageRank in 2016, but links still matter for discovery and relevance. Here's h…

Technical SEO

Bulk status checker: audit up to 200 URLs for 404s, redirects, and server errors

A bulk status check answers one question: for each URL in this list, what does the server return rig…

Technical SEO

Canonical checker: find missing, wrong, and conflicting rel=canonical tags

A `rel=canonical` tag is how a page names its preferred URL when the same (or nearly the same) conte…

Technical SEO

How to see which AI crawlers visit your site in your server logs

robots.txt states what you want crawlers to do. Access logs show what actually hit your server: whic…

Technical SEO

How to check whether AI search bots can crawl your pages

A page can look fine in Chrome and still be a thin shell in raw HTML. AI retrieval crawlers mostly r…

Technical SEO

Google's Mobile-Friendly Test Is Gone: How to Check Mobile Pages Now

Google retired its public Mobile-Friendly Test and the Search Console Mobile Usability report in Dec…

Technical SEO

How to Extract and Audit Every Link on a Page

You do not need View Source and a spreadsheet to inventory links on one page. Fetch the HTML, extrac…

On-Page SEO

How to Check for Duplicate Content Between Your Own Pages

Near-duplicate product copy and recycled blog paragraphs are easier to fix when you compare body tex…

Technical SEO

How to Search a Site's Source Code for Tags, Scripts, and Text

View Source on twenty tabs does not scale. Search raw HTML across a URL list for analytics IDs, cano…

Technical SEO

Custom Extraction with CSS Selectors and XPath: A Practical Guide

Fixed heading extractors stop where your audit question starts: a canonical href, a SKU in a data at…

Technical SEO

Automated Accessibility Checks: What They Catch and What They Miss

A clean automated report does not mean your page is accessible. Static HTML rules catch missing name…

Technical SEO

Soft 404s: How to Find Them and Why Google Flags Them

A soft 404 can mislead crawlers and users when missing URLs return the wrong HTTP status. Learn what…

Technical SEO

Indexability: How to Check If a Page Can Be Indexed

Learn whether a page can be indexed from server signals before you ask why Google excluded it. Statu…

Technical SEO

Googlebot Simulator: Compare Googlebot vs Browser Fetches

Learn when to compare Googlebot and Chrome fetches, how to read a side-by-side diff, and what Scrawl…

On-Page SEO

What Is a PAA Box? How People Also Ask Works in Google Search

A PAA box is the People Also Ask list Google shows for many searches: related questions that open in…

Technical SEO

Robots.txt Explained: How Allow, Disallow and Wildcards Really Work

Robots.txt tells crawlers which URLs they may fetch. It does not remove pages from Google's index by…

On-Page SEO

Google AI Overviews: What They Are and How to Get Your Content Cited

AI Overviews are Google's generated answer blocks on some searches. They cite a small set of sources…