404 Not Found

You clicked a link, typed an address, or followed a search result, and instead of the page you wanted, the server hands back 404 Not Found. The connection worked fine, but whatever lived at that URL is not there.

Updated June 2026 · 6 min read

  • Written by

    Andrian Valeanu Andrian Valeanu Founder of Pulsetic

    Andrian Valeanu founded Pulsetic and, before it, Designmodo. Across 15-plus years he has shipped web products, design tools, and monitoring software teams around the world rely on.

  • Reviewed by

    Ionut Caval Ionut Caval Technical reviewer

    Ionut Caval reviews Pulsetic's technical guides for accuracy. He works hands-on with web servers, networking, and uptime monitoring day to day, and makes sure the causes and fixes here hold up in production.

The short version: As a visitor, look over the URL for typos first, then fall back to the website's homepage or search box. As the owner, 301-redirect any moved pages to their new URL, fix broken internal links, and crawl the site to surface every dead URL that needs attention.

Key takeaways

  • A 404 means the server is up, read your request fine, and simply has nothing at that URL. The address is wrong, not the machine. That is why it sits in the 4xx client-error range.
  • A genuine 404 returns the 404 status code. A soft 404 is the trap: it shows visitors a not-found message while telling machines 200 OK, which burns crawl budget and leaves dead URLs sitting in Google's index.
  • When you delete something for good, reach for 410 Gone. Google handles 404 and 410 almost identically, but 410 says the removal is intentional and gets the URL dropped a touch faster.
  • An ordinary 404 will not tank your rankings. The damage is indirect: broken internal links eat crawl budget, and any page with backlinks loses its link value unless you 301-redirect it somewhere relevant.
  • Watch only the homepage and your monitor stays green while a deep product or article page quietly 404s. Check the URLs that actually pull traffic, and lean on content matching to catch the soft 404s hiding behind a 200.
Error type
HTTP 4xx client error
Whose side
Either: a bad link or the website
Fix difficulty
Easy
Common cause
Requested URL does not exist

What does 404 Not Found mean?

A 404 Not Found is how the server tells you it got your request, understood it, and has nothing to serve at that address. The server is healthy and answering, and that is what separates it from a 500: connection, DNS, and host are all fine, and only the specific resource at that URL is missing. Since the request is the problem rather than the server, the 404 lands in the 4xx family of client errors.

A 404 also tells you nothing about whether the page is gone forever. For content removed permanently, the server should answer 410 Gone, which is the clearer signal. Then there is the soft 404 to watch for: a page that shows a not found message to humans but still hands machines a 200 OK status. Search engines dislike soft 404s because they spend crawl budget on empty pages and can keep dead URLs indexed, so a missing page should return a real 404 or 410, never a 200.

YouDNSNetworkCDN / ProxyWeb serverApp / DB
The path a request takes from your browser to the website's servers. A 404 Not Found is produced at the highlighted stages.
404
HTTP status code
4xx
Client-side error class
410
Gone: the permanent sibling of 404
200
Status a soft 404 wrongly returns

How the 404 Not Found error appears

The wording changes depending on your browser, device, or server. Here is how this error commonly shows up:

What a 404 Not Found looks like in the browser. The exact wording varies by browser, device, and server.
  • 404 Not Found
  • HTTP Error 404
  • 404 Page Not Found
  • Error 404
  • The requested URL was not found on this server
  • 404 Not Found nginx

404 vs 410, 301 and 500

404 is one of several status codes that describe a missing or redirected page, and picking the right one tells browsers and search engines what really happened.

Code What it means When to use it
404 Not Found The URL does not exist, but the server does not say whether that is temporary or permanent Default for a missing page when you have no relevant replacement to redirect to
410 Gone The resource existed and has been permanently removed, with no replacement When you have deliberately deleted content for good and want search engines to drop it faster
301 Moved Permanently The page lives at a new URL now, and link value should follow When content has moved or been renamed and a relevant new page exists
500 Internal Server Error The server itself failed while handling the request Not something you set on purpose: it signals a server-side fault to fix, unlike a 404

404 vs soft 404 vs 410 vs 301: what each one signals

These four responses describe a missing or moved page very differently, and the signal each sends decides how browsers, search engines, and link equity behave.

ResponseStatus codeWhat search engines doWhat happens to link value
404 Not Found404Eventually drop the URL from the index; keep checking it for a whileLost unless you redirect, since the page no longer exists
Soft 404200 (wrongly)Flag it, keep crawling the empty page, and waste crawl budget on itStuck on a dead page; the URL lingers in the index
410 Gone410Drop the URL a little faster than a 404, treating removal as permanentLost, the same as a 404, but the signal is unambiguous
301 Moved Permanently301Follow the redirect and transfer ranking signals to the new URLPreserved and passed to the destination page

What causes 404 Not Found?

  • A URL that is mistyped or out of date: an old bookmark, or a link printed somewhere that no longer matches the live address
  • A page deleted or moved to a new URL with no redirect left behind to catch the old one
  • A broken internal link pointing at a path that does not exist anymore
  • A permalink or slug that changed after a CMS edit, restructure, or migration
  • A file, image, or asset that went missing because it was renamed or never uploaded
  • Case sensitivity on the server, where /Page and /page count as two different URLs
  • Rewrite rules or .htaccess directives that are misconfigured and keep the server from resolving valid paths

How to find the cause fast

  1. First, work out whether it is one URL or the whole site. If every page 404s, suspect a rewrite rule, a moved document root, or a broken router long before a single missing file.
  2. Look hard at the URL: typos, a stray trailing slash, the wrong capitalization, an old slug. Then load the parent directory to see what is still there.
  3. Read the server access and error logs. They confirm the request really returned 404 and show you which path was asked for and what referred the visitor.
  4. Crawl the site with Google Search Console, Ahrefs, or Screaming Frog to pull every URL returning 404 along with the internal links still pointing at them.
What a 404 Not Found looks like from the command line. The grey lines starting with # are explanatory comments.

How 404 Not Found looks from the outside

An uptime monitor fetching a URL records the exact HTTP status it gets back, so a check aimed at a page that starts returning 404 tells you the moment it breaks. Here is the honest catch: point a monitor at your homepage alone and it will report everything healthy while a deep product or blog page throws 404s, so add checks for the URLs that actually earn traffic. The soft 404 is worse, since it returns 200 even though the page reads not found, and a plain status check waves it through. A keyword check closes that gap by loading the page and confirming the expected text is present, or flagging it when a not found message shows up instead. Pulsetic runs HTTP checks from 15+ locations every 30 seconds and can match on page content, so a broken or empty page surfaces fast.

To confirm the exact code a URL returns, or to re-test several at once after a fix, run them through the free bulk URL status checker.

How to fix 404 Not Found

If you are a visitor

  1. Look over the address for typos, extra spaces, or wrong capitalization, then load it again.
  2. Strip everything after the domain and climb back one directory at a time until a page loads.
  3. Search for the content by name using the website's own search box.
  4. Search the web for the page title or topic plus the website name, since the URL may simply have changed.
  5. The page might be gone for good. Look for an equivalent elsewhere on the website.
  6. If a link on the same website sent you there, give it one reload before giving up, since the page may just be slow.

If you run the website

  1. 301-redirect any moved page to its new URL so visitors and link value both follow.
  2. Track down broken internal links and repoint them at live pages instead of dead paths.
  3. Restore or rebuild a page that was deleted by mistake but still pulls traffic or backlinks.
  4. Build a helpful custom 404 page with your navigation, a search box, and links to popular content.
  5. Review your rewrite rules, permalink settings, and .htaccess so valid URLs resolve correctly.
  6. Crawl the website on a schedule to catch new 404s before users and search engines do.
  7. Reach for 410 Gone on content you have deliberately and permanently removed with no replacement.
  8. Resist blanket-redirecting every 404 to the homepage. Search engines can read that as a soft 404, and it frustrates visitors who wanted a specific page.

Still not fixed? Next steps

  • When every URL 404s, not just one, stop looking for a missing file. Something upstream is routing valid paths to the 404 handler: a broken rewrite rule, a document root that moved, a wrong try_files in nginx, or a router that has crashed.
  • In Search Console, open Pages to get the list of 404s Google actually sees. Then run that list against a crawler such as Screaming Frog or Ahrefs to spot which dead URLs still carry internal links or backlinks worth redirecting.
  • With a single-page app, make sure the server returns a real 404 for routes it does not recognize. Client-side routing loves to render a not-found view while the server keeps answering 200, and that is a soft 404 search engines will flag.
  • A page that 404s only some of the time points at a few suspects: a CDN edge that cached the 404, a case mismatch (/Page vs /page), or a deploy that dropped the file. Purge the cache or restore the file accordingly.

Code & configuration

Copy-paste starting points. Replace example.com and the paths with your own, and test changes on staging before production.

301-redirect a moved page (nginx)

# In the server block, send the old path to its new home
location = /old-page/ {
    return 301 /new-page/;
}

301-redirect and a custom 404 page (Apache .htaccess)

# Permanent redirect for a moved URL
Redirect 301 /old-page/ https://example.com/new-page/

# Serve your own 404 design for everything else
ErrorDocument 404 /404.html

Set a custom 404 page (nginx)

error_page 404 /404.html;
location = /404.html {
    root /usr/share/nginx/html;
    internal;
}

How to prevent 404 Not Found

A 404 on a key page bleeds traffic and conversions quietly, and if it stays broken, search engines may drop the URL altogether. Pulsetic watches the specific pages that matter from multiple locations every 30 seconds, and its keyword checks confirm the right content actually loads, so a page that starts returning 404, or silently shows a not-found message, reaches you by email, SMS, Slack, and more before a customer or Googlebot stumbles on it. It watches from the outside, not your server's internals.

Learn how Pulsetic's uptime monitoring detects this from the outside, across 15+ locations.

Frequently asked questions

  • Does a 404 error hurt SEO?

    A normal 404 will not directly lower your rankings, and search engines treat missing pages as routine. What matters is the indirect cost: broken internal links waste crawl budget and pass no authority, and any dead URL that held backlinks loses that link value unless you redirect it. Keep your 404s tidy, but do not lose sleep over them.

  • What is a soft 404?

    A soft 404 is a page that reads as missing to a human, showing a not found or empty message, while the server keeps returning a 200 OK status to machines. Search engines flag these because they cannot tell the page is dead, so they go on crawling and indexing it. The fix is to make genuinely missing pages return a real 404 or 410 status.

  • What is the difference between 404 and 410?

    404 means the page is not found, without saying whether that is temporary or permanent. 410 Gone means the page was removed permanently and on purpose. In practice Google treats them the same and drops both from the index, but 410 is the clearer signal that the content is never coming back, so it can disappear a little faster.

  • Should I redirect 404s to the homepage?

    No, not across the board. Google has said redirecting every missing page to the homepage can count as a soft 404, so there is no SEO upside, and it irritates visitors who wanted a specific page. Redirect a 404 only when you have a genuinely relevant replacement. With no good match, let it serve a clean 404 or 410.

  • How do I make a custom 404 page?

    Build an HTML page with your website header, navigation, a search box, and links to popular content, then point your server at it. On Apache, use ErrorDocument 404 /404.html in .htaccess; on nginx, use the error_page 404 /404.html; directive. Most CMS platforms let you design a 404 template directly too. Keep it helpful, and make sure it still returns a 404 status rather than 200.

  • Is a 404 my fault as the visitor?

    Usually not. Most 404s trace back to an outdated link, a page the owner moved or deleted, or a server-side change, none of which is in your hands. The one thing worth checking on your end is the URL for a typo or wrong capitalization. If the address is right and it still 404s, the problem lives on the website.

  • How do I find all the 404 errors on my website?

    Open Google Search Console to see which URLs Google found returning 404, and run a crawler like Ahrefs, Semrush, or Screaming Frog to map every dead link and the internal pages pointing at it. For the pages that earn real traffic, an uptime monitor with content or keyword checks can alert you the instant one starts returning 404 or a not found message.

  • Do I need to fix 404s that have no traffic or backlinks?

    There is no rush. A 404 on a URL nobody links to and nobody visits is just part of how the web works, and Google fully expects to run into them. Put your effort where it pays off: redirect the 404s that still get traffic or hold backlinks to a relevant page, fix broken internal links, and let the genuinely dead URLs serve a clean 404 or 410. Driving every zero-traffic 404 to zero is busywork.

  • Why does Google keep crawling a URL that returns 404?

    Google rechecks known 404s every so often on the off chance the page returns, so a 404 sticks around in your crawl logs and Search Console for a while instead of disappearing right away. Nothing is wrong, and it is not a penalty. Want a deleted page gone faster? Return 410 Gone. That marks the removal as deliberate and tells the bot to come back less often.

  • What is the difference between a 404 and noindex?

    A 404 tells the server there is no page here, so the URL should fall out of the index over time. A noindex tag, by contrast, returns a live 200 page that Google is allowed to crawl but asked not to index. Use 404 or 410 when the content is gone, and noindex when the page must stay live for users (a thank-you page, a filtered view) but should not appear in search. Do not combine them: a 404 page is never crawled deeply enough for a noindex tag to matter.

  • Does a custom 404 page still return a 404 status?

    It should, though plenty of sites get this wrong. A properly built custom 404 serves your branded design while the header still carries the 404 status code. The usual slip-up is redirecting every missing page to a normal 200 page, or rendering the not-found design through the homepage, which quietly turns it into a soft 404. Run curl -sI yourdomain.com/does-not-exist and check that you still get HTTP/1.1 404 Not Found.

  • Why does my single-page app show a not-found page but return 200?

    The routing lives in the browser instead of on the server. For every path, the server hands back the same 200 app shell, then JavaScript works out that the route is missing and renders a not-found view. Machines never see anything but 200. That is a soft 404. Fix it by making the server send a genuine 404 status for unknown routes, through server-side rendering, prerendering, or an explicit not-found route that sets the status, so search engines treat the page as missing.

  • How do I get alerted on a soft 404, where the page says not found but still returns a 200 status?

    A plain status check sails a soft 404 right through, since the server reports 200 OK even while the page reads as missing, which is precisely why search engines treat soft 404s as wasted crawl budget. The status code alone will never catch this. You have to look at the page body. Pulsetic's keyword check loads the page and confirms the expected text is there, or flags it when a not-found message shows up instead, so a deep product or article page that silently breaks surfaces fast rather than bleeding traffic until Googlebot notices. Pair that content match with checks aimed at the URLs that actually earn traffic, not just the homepage, and an invisible soft 404 turns into an alert.