HTTP 304 Not Modified

Status code 304 · Class 3xx

HTTP

Not Modified

Also searched as: HTTP 304, 304 not modified

HTTP request chain from browser through CDN and proxy to the origin server
HTTP errors: find which hop in the request chain failed and read its logs.

What it means

304 is a normal, healthy response: the browser asked 'has this changed since my cached copy?' and the server answered 'no, use your copy'. No body is sent, which saves bandwidth. You only need to act if outdated content keeps appearing.

Applies to: All browsers, nginx, Apache, CDNs

How to fix HTTP 304 Not Modified

  1. If you see outdated content, do a hard reload (Ctrl+Shift+R or Cmd+Shift+R) to bypass the cache
  2. In DevTools, check 'Disable cache' on the Network tab while developing
  3. If you own the site: make sure ETag or Last-Modified changes whenever the file changes
  4. If you own the site: use versioned file names (app.3f2a1.js) for static assets with long cache lifetimes
  5. If you own the site: set 'Cache-Control: no-cache' on HTML so browsers revalidate pages each time

Why it happens

Conditional requests with If-None-Match or If-Modified-Since let servers answer 304 when the representation has not changed (RFC 9110). Stale content issues come from validators that do not change when content does.

FAQ

Is 304 Not Modified an error?

No. It is a success-path response showing caching works correctly.

Related errors

Source: IANA HTTP Status Code Registry · fixes written and reviewed by the editors (see our editorial policy)

Last updated: