Toolman

HTTP 404 — Not Found

4xx Client Error

What it means

The server has no resource at this URL. It does not say whether the resource ever existed or ever will.

What to do about it

Check for a typo, a missing trailing slash, a case-sensitivity mismatch, or a route that was never registered. If the page moved, return a 301 to the new location instead of a 404 — that preserves search rankings and does not strand inbound links.

Where it sits

404 belongs to the 4xx family: The request contains something the server will not or cannot process. The fix is normally on the client side.

HTTP/1.1 404 Not Found

Checking it yourself

# see the status code and headers only
curl -sI https://example.com/path

# follow redirects and print each hop
curl -sIL -o /dev/null -w "%{http_code} %{url_effective}\n" https://example.com/path

# JavaScript
const r = await fetch(url);
console.log(r.status, r.statusText);

How this code behaves

Cacheable by defaultYes — per RFC 9110, this status is cacheable unless headers say otherwise.
Safe to retryNo. Retrying an identical request will produce the same result — the request itself must change.
Effect on search indexingGoogle drops the URL from its index after repeated 404s, but slowly — weeks rather than days.

Returning 404 correctly

# nginx
return 404;

# Express
res.status(404).json({ error: 'Not Found' });

# Go
w.WriteHeader(404)

# Python (Flask)
return jsonify(error='Not Found'), 404;

Frequently asked questions

What does HTTP 404 mean?

The server has no resource at this URL. It does not say whether the resource ever existed or ever will.

How do I fix a 404 error?

Check for a typo, a missing trailing slash, a case-sensitivity mismatch, or a route that was never registered. If the page moved, return a 301 to the new location instead of a 404 — that preserves search rankings and does not strand inbound links.

Is 404 a client or server problem?

A client problem by definition — the request needs to change. That said, a 4xx can still be the server’s fault if it is misconfigured and rejecting valid requests.

Other 4xx codes

All HTTP status codes