HTTP 404 in AWS S3

Key doesn't exist, or the caller has `s3:ListBucket` denied (S3 returns 404 to hide existence).

Why AWS S3 returns 404

Key doesn't exist, or the caller has `s3:ListBucket` denied (S3 returns 404 to hide existence).

How to fix it

Confirm the object key exactly (case-sensitive), then grant `s3:ListBucket` on the parent prefix if you want a true 404 vs 403 signal.

Where this surfaces in AWS S3

S3 access logs, CloudFront distribution logs, or the browser response headers (`x-amz-request-id`).

Amazon S3 — object storage, often fronting a static site or CDN.

What HTTP 404 means generally

The requested resource could not be found on the server — the page may have been deleted, moved, or the URL was typed incorrectly.

HTTP 404 Not Found is the most recognised error code on the web. It tells the client that the server reached but could not find anything matching the requested URL. A 404 does not mean the server is broken — it simply means the path doesn't map to a resource. A small number of 404s is unavoidable (mistyped URLs, expired campaign links, scraper noise). A large or growing number is a warning sign: deleted pages without redirects, broken internal links, a botched migration, or a CMS misconfiguration.

Other common causes of 404

SEO impact

High SEO impact. 404s waste crawl budget (Googlebot stops crawling broken paths but keeps re-checking them), drop the link equity of inbound backlinks (a backlink to a 404 page gives you nothing), and erode user trust. Google does not penalise sites for having some 404s — it expects them — but it does penalise sites with a high proportion of broken internal links or large numbers of previously-indexed pages now returning 404 without redirects. Sites that migrate without redirects routinely lose 40-80% of organic traffic.

How to catch it next time

LemWatch crawls your site continuously, catches new 404s the moment they appear, and groups them by source (which page links to the broken URL). It also monitors that pages previously returning 200 don't silently start returning 404 — a classic sign of a botched deploy.