404 Not Found: what it means and how to fix it
404 Not Found means the server has no page at the requested URL, or won’t reveal one; Google drops 404 URLs from its index.
404 Not Found means the server has no current page at the requested address, or won’t say whether one exists. It’s the most common error on the web, and on its own it isn’t a problem: it’s the honest answer for a URL that doesn’t exist.
What 404 means in the HTTP standard
RFC 9110, section 15.5.5 defines 404 as “the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.” A 404 says nothing about whether the absence is temporary or permanent. If you know a page is gone for good, the spec prefers 410 Gone. A 404 is cacheable by default.
Common causes
- A page was deleted, or its slug changed, without a redirect.
- Typos in internal links, menus or the XML sitemap.
- Other sites linking to a misspelled or outdated URL.
- Case or trailing-slash mismatches: on Linux servers
/Pricingand/pricingare different paths. - A site migration that changed the URL structure.
- WordPress rewrite rules that need regenerating; saving Settings → Permalinks fixes many sudden 404s on posts.
How Google handles 404 pages
According to Google’s documentation on HTTP status codes and network errors, Googlebot treats 4xx codes (except 429) as a sign that the content doesn’t exist. URLs already in the index are removed, newly discovered 404 URLs aren’t processed, and crawl frequency for them gradually drops. Content served with a 404 is ignored.
404s don’t harm the rest of your site; Google has long said that returning 404 for URLs that shouldn’t exist is correct. The real costs are lost link value when a page with backlinks disappears, and wasted crawls when your own links keep pointing at dead URLs.
Watch for the opposite mistake, the soft 404: a “page not found” message served with 200 OK. Google detects many of these and reports them in Search Console, but the clean fix is to return a real 404 status.
How to fix 404 errors
For site owners
- Export the “Not found (404)” list from the Page indexing report in Google Search Console, and scan your pages with the broken link checker.
- For each URL, decide: if a close replacement exists, add a 301 redirect to it; if the content is gone for good, keep the 404 (or send 410); if the URL was never real, fix the link pointing to it.
- Update internal links and the sitemap so they point at final URLs.
- Don’t redirect every dead URL to the home page; Google may treat those redirects as soft 404s anyway.
For developers
Serve a helpful custom error page with a search box and popular links, but keep the 404 status. In Apache, point ErrorDocument at a local path; a full URL makes Apache send a redirect and the client never sees the 404:
# .htaccess
ErrorDocument 404 /errors/404.html
In Nginx:
error_page 404 /404.html;
location = /404.html {
root /var/www/errors;
internal;
}
In application code, set the status explicitly before any output, such as http_response_code(404); in PHP or res.status(404) in Express.
How to check a 404
Paste URLs into the HTTP status checker to see the exact code for up to 50 addresses at once, and run old URLs through the redirect checker to confirm each lands on a 200 page in a single hop. The raw response looks like this:
HTTP/2 404
content-type: text/html; charset=utf-8
cache-control: public, max-age=300
content-length: 4127
<!doctype html>
<title>Page not found</title>
... Frequently asked questions
Do 404 errors hurt my SEO?
Not for the rest of your site; Google expects 404s for URLs that don’t exist. The problems are important pages that 404 and lose their links and traffic, and internal links that keep sending users and crawlers to dead URLs.
Should I use 404 or 410 for deleted pages?
Both remove the URL from Google’s index, and Google handles all 4xx codes except 429 the same way. Use 410 when you know the removal is permanent, and 404 when you’re not sure.
How long does Google take to drop a 404 page?
The URL is removed once Googlebot recrawls it and sees the 404, so timing depends on how often that URL is crawled. For urgent cases, Search Console’s Removals tool hides a URL temporarily while the 404 takes effect.