What does HTTP 404 mean?
The server cannot find anything at the requested URL. The most familiar status code. It says nothing about whether the page ever existed or will exist again; use 410 if you know a page is gone for good.
4xx Client error: The request has a problem the client can fix: wrong URL, missing credentials, bad data or too many requests.
Common causes of a 404 error
- The page was deleted or moved without a redirect.
- A typo in the link or URL.
- Case sensitivity on Linux servers (
/Aboutvs/about). - A broken internal link or an outdated sitemap.
How to fix 404 Not Found
- Redirect moved pages with 301 to the closest equivalent.
- Fix internal links — run a broken link check.
- Serve a helpful 404 page with search and links, but keep the 404 status code.
How to find the cause of a 404
Confirm what the server returns, then find where the broken link comes from.
curl -I https://example.com/old-page
sudo grep " 404 " /var/log/nginx/access.log | tail -n 20The access log shows each missing address and, in the default format, the page that linked to it. On WordPress, re-saving Settings → Permalinks fixes 404 errors on every page except the home page, because it rebuilds the rewrite rules.
404 and SEO
A normal part of the web: 404s do not hurt your site’s rankings by themselves. Problems arise when important pages 404, when internal links point to 404s, or when error pages return 200 (soft 404).
Example response
HTTP/1.1 404 Not Found
How to return a 404 response
Node.js (Express)
res.status(404).json({ error: 'Not Found' });PHP
http_response_code(404);Python (Flask)
return {'error': 'Not Found'}, 404Go (net/http)
w.WriteHeader(404)nginx
return 404;
Related status codes
- 410 Gone — The resource has been permanently removed and will not return.
- 301 Moved Permanently — The resource has a new permanent URL, given in the Location header.
- 403 Forbidden — The server understood the request but refuses to authorize it.
- 500 Internal Server Error — The server hit an unexpected condition and could not complete the request.
Check which status code a URL returns with the HTTP header checker, and find broken links on your site with the broken link checker.