Free tool, no account needed

404 Error Checker

Paste up to 100 URLs and find out which ones are dead. Hard 404s, 410s and server errors are listed first, soft 404s that answer 200 while saying the page is missing are flagged alongside them, and every row comes with the fix it needs.

0 URLs · up to 25
8 runs remaining today

Short answer

A 404 checker tests a list of URLs and reports which no longer exist. This one takes up to 100 URLs per run, follows every redirect hop, and lists 404, 410 and 5xx first. It also catches soft 404s: pages answering 200 while saying they are missing, and deep URLs redirected to the homepage. Each row says whether to redirect it, restore it, or drop the links pointing at it.

What counts as a 404, and what only looks like one

"Broken" covers four different answers from a server, and they do not have the same fix. A bulk checker that reports them all as one red row is how working links get deleted. The table below is the one this tool sorts by: everything above the line is a page that is genuinely not there, everything below it is a page that refused the request or never answered.

What came backIs the page missing?What it meansWhat to do
404 Not foundYesThe server has no page at this URLRedirect it if it had traffic or links; otherwise leave it
410 GoneYes, on purposeRemoved deliberately and not coming backNothing, unless it was removed by mistake
200 but reads as missingYes, invisiblyA soft 404: success code, not-found pageMake the server return a real 404 or 410
Redirected to the homepageYes, in effectUsually treated as a soft 404Redirect to the closest equivalent instead
500 / 502 / 503 / 504No, it failedThe page exists but the server brokeFix the application; persistent 5xx lowers crawl rate
403 ForbiddenNoA firewall or CDN refused an automated requestOpen it in a browser; check bots are not blocked
401 UnauthorizedNoBehind a login, so it cannot be indexedExpected on private URLs; a finding on public ones
429 Too many requestsNoThe server is rate limitingRe-run a smaller batch; raise the limit for crawlers
No responseUnknownTimed out, looped, or refused the connectionCheck by hand before treating it as broken
301 / 302 then 200NoIt loads, through a redirectPoint the links at the final URL

The distinction that matters most in that table is between the first four rows and the rest. A 404 is a statement about the page. A 403, or a 429, is a statement about the request, and a request from this tool is not the request your readers make. Checking those by hand before acting on them is step three of the procedure below for a reason.

Soft 404s: the broken pages that answer 200

Most 404 checkers report the status code and stop. That misses the most expensive kind of broken page on a large site, because the status code is the one thing a soft 404 gets right.

A soft 404 is a page that tells the visitor it does not exist while the server answers 200 OK. Nothing in your monitoring reports it:

  • The uptime check sees a 200 and stays green.
  • The server log records a 200, so no error report fires.
  • The analytics suite records a pageview like any other.
  • Google reads the content, decides the page is not there, files it under Soft 404 in the Search Console page indexing report, and drops it.

The first you hear about it is a traffic chart going down, usually weeks later.

Where they come from

  • A CMS with a friendly not-found template. The theme renders "Sorry, we could not find that page" inside the normal layout and never sets the status, so the template is correct and the response is not.
  • A JavaScript app that routes everything to one shell. The server answers 200 for every URL under the domain because it cannot know which routes exist until the bundle runs. Every mistyped URL on the site is then a soft 404.
  • Deleted products and expired listings. Ecommerce platforms often serve an "out of stock" or "no longer available" page at the old URL, with a 200, for years.
  • Every removed page redirected to the homepage. It is the fastest way to clear a 404 report, and Google generally treats the result as a soft 404 anyway, so none of the old page's value is passed on.

This tool flags the first three patterns by reading the title and first heading of any 200 HTML response for not-found phrasing, and the fourth by noticing that a deep URL ended on the homepage. Only the first 64 KB of the body is read, so a flag is a reason to look rather than a verdict.

The fix is a status code, not better wording

Rewriting the message on a soft 404 page changes nothing. The page needs to answer 404 or 410, or be redirected to a page that genuinely answers the visitor's question. Those are the only two outcomes that end the problem.

What to do with each 404: redirect, restore, or remove

A list of 404s is not a to-do list until each row has a decision attached. There are only three, and which one applies depends on two facts about the URL: whether a close equivalent exists, and whether anything of value points at it.

SituationDecisionWhy
The page moved, and the new URL covers the same thing301 redirect to itPasses the old page's signals and sends the visitor somewhere useful
The page was deleted, but a close equivalent exists301 redirect to the equivalentBetter than a 404 if the URL had traffic or backlinks
The page was deleted and nothing replaces itLeave it 404, or return 410A redirect to something irrelevant is treated as a soft 404 anyway
The page should never have goneRestore it at the same URLThe cheapest fix available, and the only one that keeps the URL
Only your own pages link to itFix the links, then let it 404A redirect that exists to serve internal links is a permanent tax on every crawl
Another site links to it and the page is gone301 to the closest equivalentThe only way to keep the value of that link
The URL was never real: a typo, a tracking parameter, a scraperLeave it 404Nothing is lost and no redirect rule is worth maintaining for it

Two rules keep this from going wrong. Do not redirect to the homepage, because Google usually reads a deep URL sent there as a soft 404 and the visitor has to start their search again. And do not build a redirect rule for a URL nothing links to: every 301 redirect is a rule somebody has to maintain, and a chain of them spends crawl budget on pages that no longer exist.

What the status code cannot tell you is which of the broken URLs is worth the work. A 404 matters in proportion to the traffic and the links it used to carry, and both of those numbers live in Search Console rather than in the HTTP response. That join is what the technical SEO audit does.

How to find the 404 errors on your site

Six steps, in the order that stops a bulk run from causing damage.

  1. 01

    Gather the URLs you are worried about

    The pages from a site before a migration, the URLs in a Search Console 'Not found (404)' export, a sitemap, the link column of a spreadsheet, or the pages you just deleted. One per line or comma separated. Duplicates are dropped before the run starts.

  2. 02

    Run them and read the broken table first

    Everything that returns 404, 410, a server error or reads as a soft 404 is lifted into its own table above the working URLs, sorted so the hard 404s come first. That table is the answer to the question you came with.

  3. 03

    Separate the real 404s from the blocked ones

    A 401, 403 or 429 means a crawler was turned away, not that the page is missing, and a timeout means nothing at all. Open those in a browser before you touch them. Deleting a working link over a bot block is the most common mistake made with a bulk checker.

  4. 04

    Check the soft 404 flags by hand

    A soft 404 is a 200 whose title or first heading says the page does not exist. The flag is read from the first 64 KB of HTML, so it is a prompt to look rather than a verdict. Confirm, then make the server return a real 404 or 410.

  5. 05

    Decide redirect, restore or remove for each one

    Redirect it if a close equivalent exists and the URL had traffic or links. Restore it if the page should never have gone. Remove the links pointing at it if neither applies, and let the URL return 404.

  6. 06

    Export the CSV and sort by what the page used to earn

    A list of 404s is a to-do list without an order. Line the export up against a Search Console export: a 404 on a URL with impressions or backlinks is urgent, and a 404 on a page nobody has visited in a year is fine as it is.

For the URL list itself, the sitemap URL extractor pulls every URL out of an XML sitemap, and the website URL extractor crawls a site that does not publish one. Before a migration, export the old site's URLs and run them here after launch: every row that is not a 200 is a page the move lost.

Which of the three checkers answers your question

CrawlRaven has three tools that touch broken pages, and they are not alternatives. They differ in what you start with.

You start withYou want to knowUse
A list of URLsWhich of them are dead, and what to doThis 404 error checker
A list of URLsThe exact code each one returns, redirects includedThe HTTP status code checker
One pageWhether the links on it point anywhere deadThe broken link checker
One URL that redirectsEvery hop and header in the chainThe redirect chain checker
A site with no URL listEvery URL on it, to checkThe website URL extractor
  • Broken link checker reads one page, extracts every link on it, and tests each destination. The answer is about a page: does this article send readers anywhere dead. Use it before you publish or after you refresh a post.
  • HTTP status code checker takes the same list this page takes and reports every code evenly, 301s and 302s included, with first status, final status and timing per hop. Use it when redirects are the subject rather than a detail.
  • This page takes a list and answers one question: which of these are broken. Dead and suspect URLs are lifted above the working ones, soft 404s sit beside the hard ones, and each row carries its fix.

For a single URL where you need every header on every hop, the redirect chain checker and the HTTP header checker go deeper than any of the three.

What this 404 checker reports

Up to 100 URLs per run

Sent in batches of twelve, with rows landing while the run continues

Broken URLs listed first

404s, 410s, soft 404s and server errors above the working ones

Soft 404 detection

200 responses whose title or first heading says the page is missing

Homepage redirects flagged

A deep URL sent to the homepage, which Google reads as a soft 404

The fix on every row

Redirect it, restore it, or remove the links pointing at it

Blocked separated from broken

403, 401, 429 and timeouts grouped apart, because they are not 404s

Full redirect chain

Every hop walked by hand, so a 301 landing on a 404 is visible

CSV export

Verdict, fix and status per row, ready to sort against a Search Console export

What this reads, and what it cannot

Each URL is requested from a US server with a crawler user agent, and redirects are followed one hop at a time up to ten. Sites that answer bots differently from browsers, or differently by country, may report a status here that you do not see yourself, and that difference is usually the finding rather than an error. The soft 404 check reads only the title and first heading of the first 64 KB of a 200 HTML response, so treat a flag as a prompt to look. What no status check can tell you is which broken URL is costing you anything, because that number lives in Search Console. Joining crawl data to impressions and sessions is what the technical SEO audit does.

Frequently asked questions

What is a 404 checker?

A 404 checker requests a list of URLs and reports which of them no longer exist. This one takes up to 100 URLs per run, follows every redirect hop, and sorts the results so the 404s, 410s, server errors and soft 404s come first, each with the fix it needs. A URL answering 200 while its heading says the page is not there is a soft 404, and this tool flags those too.

How do I check a URL for a 404 error?

Paste the URL into the box above and run it. The tool requests the URL from a US server, follows any redirects one hop at a time, and reports the status the chain ends on. A 404 means not found, a 410 means removed on purpose, a 5xx means the server failed, and a 200 means the page loaded, unless the content says otherwise.

How many URLs can I check for 404s at once?

Twenty-five per run without an email, and one hundred after you enter one. The list is sent to the server in batches of twelve, so rows appear while the rest of the run is still going and one slow host costs only its own row rather than the whole run.

What is a soft 404?

A soft 404 is a page that tells the visitor it does not exist while the server answers 200 OK. It is the most expensive kind of broken page because nothing reports it: uptime monitors see success, server logs see success, and Google sees a not-found page and drops it from the index. This tool flags two patterns, a 200 whose title or first heading reads like a not-found page, and a deep URL redirected to the homepage.

Why does a page return 200 when it says 'page not found'?

Because the status code and the content are set in different places. A CMS that renders a friendly not-found template often forgets to set the status, and a JavaScript app that routes every URL to the same shell always answers 200 before it knows whether the page exists. Both produce a soft 404. The fix is on the server, not in the template text.

Are 404 errors bad for SEO?

Not in themselves. Google has said repeatedly that 404s on pages that genuinely no longer exist are a normal part of the web and do not harm the rest of the site. They cost you in two specific cases: when the missing page used to earn traffic, and when other sites link to it, because the value of those links goes nowhere. Fix those two; leave the rest.

How many 404s is too many?

There is no threshold, because the count is not what matters. A thousand 404s on URLs nobody ever visited cost nothing. Ten 404s on pages with backlinks and search impressions are worth a morning's work. Judge the list by what each URL used to earn, which is why the export is built to line up against a Search Console report.

Should a removed page return 404 or 410?

Either is correct. A 410 says the page is gone deliberately and Google has said it may drop a 410 marginally sooner than a 404. In practice both end in the same place after a few recrawls. Use 410 when you are removing content on purpose and want it out of the index quickly, and 404 for everything else.

Should I redirect every 404 to my homepage?

No. Google generally treats a deep URL redirected to the homepage as a soft 404, so the old page's signals are not passed on and the visitor lands somewhere that does not answer their question. Redirect to the closest equivalent page, or let the URL return 404. This tool flags homepage redirects as broken for exactly this reason.

What is the difference between a 404 and a 410?

A 404 means the server cannot find the page and makes no claim about whether it ever existed or might return. A 410 means the page existed, was removed on purpose, and is not coming back. Search engines treat them almost identically, with 410 dropped a little faster.

Does a 403 mean the page is broken?

No. A 403 means the request was refused, which usually means a firewall or CDN rule is blocking automated requests. The page may load perfectly for a visitor in a browser. It is still worth investigating, because a rule that blocks this tool usually blocks Googlebot too, and a page Googlebot cannot fetch cannot be indexed. This tool puts 403s in a separate group rather than calling them broken.

Why does this tool show a 404 when the page loads in my browser?

Usually because the server treats bots differently from browsers. A CDN may serve a crawler a 403 or 404 while serving a signed-in browser the real page, and some sites answer differently by country. Requests here come from a US server with a crawler user agent, which is closer to what Googlebot sees than your browser is, so the difference is often the finding rather than a false positive.

Does this 404 checker crawl my whole site?

No. It checks the list of URLs you give it. To get that list, the sitemap URL extractor pulls every URL out of an XML sitemap and the website URL extractor crawls a site that does not publish one. To find the broken links sitting on one page rather than test a list, use the broken link checker.

Does it run JavaScript?

No, and that is deliberate. The status code is decided by the raw HTTP response, before any JavaScript runs. A single-page app that renders a not-found message client-side while the server answers 200 is a soft 404, and catching exactly that case is one of the things this tool is for.

How do I find the 404s in Google Search Console?

Open the Pages report under Indexing and look for the 'Not found (404)' and 'Soft 404' reasons. Export the URL list, paste it here, and you get the current status of each one plus the fix, which the Search Console report does not give you. Search Console data lags by a few days, so a URL you already fixed can still be listed there.

What is the difference between this and the broken link checker?

This tool starts from a list of URLs you already have and tells you which of them are broken. The broken link checker starts from one page, finds every link on it, and tests each destination. Use the link checker when the question is 'does this page link anywhere dead'; use this one when the question is 'are these URLs still alive'.

What is the difference between this and the HTTP status code checker?

They share the same engine and differ in what they lead with. The HTTP status code checker reports every code evenly, including the 301s and 302s, and is the right page when the question is 'what does this URL return'. This one lifts the 404s, 410s, soft 404s and server errors above everything else and attaches the fix to each, because the question here is 'which of these are broken'.

Other crawl and indexing tools

Website URL Extractor

Crawl any website and download every URL it links to as CSV, TXT, or JSON. Works straight from the live site, no sitemap required.

Use tool

Redirect Chain Checker

Trace every redirect hop with status codes and response times. Detect loops, long chains, protocol downgrades, and 302 misuse.

Use tool

HTTP Status Code Checker

Check the status code of up to 100 URLs at once: 200, 301, 404, 410 or 5xx, with every redirect hop, possible soft 404s and response times.

Use tool

Website Speed Test

Test a page on mobile or desktop: real-visitor Core Web Vitals (LCP, INP, CLS) next to the Lighthouse score, with fixes sorted by time saved.

Use tool

Page Indexability Checker

Find out why a page is not indexed. Checks status codes, noindex tags and X-Robots-Tag headers, robots.txt rules, canonicals, sitemap membership, and rendered content.

Use tool

Broken Link Checker

Find links that no longer work, internal and external together. Checks up to 50 links on a page for 404 errors, redirects, and timeouts.

Use tool

External Link Checker

Audit who a page links out to and on what terms. Destinations grouped by domain, with rel nofollow, sponsored and ugc, new-tab safety, and live status.

Use tool

Internal Link Checker

Find the broken internal links in a page's body copy, plus redirects, nofollowed internal links and anchors that describe nothing, each with the fix it needs.

Use tool

Internal Link Analyzer

See which internal links a page makes in its own writing and which come from the template, grouped by destination, with anchor text, nofollow and live status.

Use tool

Robots.txt Tester

Analyze robots.txt to see which AI crawlers and search engines are blocked, find sitemaps, and identify access issues.

Use tool

Robots.txt Generator

Build a correct robots.txt from presets for WordPress, ecommerce, and AI crawlers. Decide which bots to allow, add your sitemap, copy the file.

Use tool

llms.txt Generator

Build a valid llms.txt from your own pages: the H1, blockquote summary and H2 link sections the proposal specifies, checked for relative URLs and duplicates.

Use tool

HTTP Header Checker

Read every response header a URL returns, with the redirect chain timed hop by hop and X-Robots-Tag, header canonicals and caching gaps called out.

Use tool

Shopify robots.txt.liquid Generator

Build a robots.txt.liquid template that keeps Shopify's default rules in the Liquid loop and adds blocks for tag pages, vendor and type collections, filter parameters and AI crawlers.

Use tool

Shopify App Script Checker

Inventory every script tag on a Shopify product or collection page by origin: theme, Shopify platform, app and third-party. Flags async, defer and blocking scripts, sizes up to 30 external files and lists legacy ScriptTag API scripts.

Use tool

Read up on crawling and indexing

A tool tells you what is wrong. These explain what to do about it.

Terms this tool checks

  • 301 Redirect

    A 301 redirect is a permanent server-side redirect that tells search engines a page has permanently moved to a new URL.

  • Indexation

    Indexation is the process by which search engines add web pages to their searchable database (index).

  • Crawl Budget

    Crawl budget is the number of pages a search engine will crawl on your site within a given timeframe, determined by crawl rate limit (how fast Googlebot can crawl without overloading your server) and crawl demand (how much Google wants to crawl based on popularity and freshness).

  • Link Equity

    Link equity (also called link juice or PageRank) is the ranking value passed from one page to another through hyperlinks.

Sixty 404s, and no idea which six matter

A list of broken URLs is a to-do list without an order. CrawlRaven joins your crawl to Search Console and GA4, so every 404, soft 404 and redirect chain comes back ranked by the impressions, clicks and sessions behind it, and tells you which pages still link to each one.