---
title: 404 Not Found
description: What HTTP 404 means, soft 404s, SEO impact, and how to catch broken URLs before users and search engines do.
canonical: https://watchfor.io/docs/reference/http-status-codes/404
---

# 404 Not Found

What HTTP 404 means, soft 404s, SEO impact, and how to catch broken URLs before users and search engines do.

**404 Not Found** — the server is reachable and working, but nothing lives at
the requested URL. It makes no claim about whether the resource ever existed or
might exist again; for a deliberate "gone forever" signal, 410 Gone is more
precise (and search engines de-index 410s faster).

## Common causes

- **Broken internal links** after a redesign or slug change without redirects
- **Deploy gone wrong** — assets built with hashed filenames deployed
  partially, so `app.a1b2c3.js` 404s and the page white-screens
- **Case sensitivity** — `/About` works on Windows/macOS dev machines and
  404s on Linux servers
- **Missing rewrite rules** — single-page apps need a fallback to
  `index.html`; without it every deep link 404s on refresh
- **Trailing-slash mismatches** — `/docs` vs `/docs/` treated as different
  resources by some servers
- **DNS or vhost misrouting** — the request reached the *wrong site*, which
  correctly has no such path (the 404 page's branding gives it away)

## Soft 404s

A "soft 404" is a page that says "not found" but returns **200**. Search
engines must guess it's an error page; monitoring tools think everything is
fine. The inverse — valid content served with a 404 status — gets de-indexed.
Always make the status code match the content.

## SEO impact

Individual 404s are normal and don't hurt rankings by themselves. What hurts:
inbound links pointing at 404s (lost link equity — redirect them with a
[301](/docs/reference/http-status-codes/301)), and error spikes that waste
crawl budget. After any URL-structure change, keep old URLs redirecting.

## Debugging and prevention

Check what a URL really returns — status, headers, redirect chain — with the
free [HTTP header checker](/http-header-checker). For URLs that must keep
working (payment callbacks, deep-linked landing pages, sitemap entries), an
[HTTP monitor](/docs/monitors/web) asserting on status 200 turns a silent 404
into an alert. The [sitemap checker](/sitemap-checker) finds sitemap entries
that have started 404ing — the fastest way to lose index coverage.

---

Canonical page: https://watchfor.io/docs/reference/http-status-codes/404 · All docs: https://watchfor.io/docs · Site guide: https://watchfor.io/llms.txt
