HTTP 304 — Not Modified
HTTP 304
Not Modified
Your cached copy is still current, so the server is not sending the file again.
What 304 actually means
The client asked "has this changed since the version I already have?" using `If-None-Match` or `If-Modified-Since`, and the server checked and said no. The response has no body at all, which is the whole point: a 304 costs a few hundred bytes instead of re-downloading an image. A page full of 304s in the network panel is a well-cached page, not a broken one.
Common causes
- The client sent an `If-None-Match` header whose ETag matched the current one
- The client sent `If-Modified-Since` and the resource has not changed
- A CDN revalidated a stale cache entry against the origin
If you're just trying to view the page
- Nothing — this is caching working as designed and makes pages load faster
- If you are seeing an outdated version of a page, force a reload with Ctrl+F5 (Windows) or ⌘ + Shift + R (Mac) to bypass the cache
If it's your site
- A 304 must not include a body; some frameworks accidentally send one and break clients
- If updated assets are not reaching users, check whether your ETag is stable across servers — load-balanced fleets that generate ETags from inode numbers produce inconsistent results
- Content-hashed filenames plus long `Cache-Control: immutable` avoid the revalidation round trip entirely
Reference
- Status code
- 304
- Reason phrase
- Not Modified
- Category
- 3xx — Redirection
- Defined in
- RFC 9110 §15.4.5
Common questions
- What does HTTP 304 mean?
- Your cached copy is still current, so the server is not sending the file again. The client asked "has this changed since the version I already have?" using `If-None-Match` or `If-Modified-Since`, and the server checked and said no. The response has no body at all, which is the whole point: a 304 costs a few hundred bytes instead of re-downloading an image.
- How do I fix a 304 error?
- Nothing — this is caching working as designed and makes pages load faster
- Is 304 a client error or a server error?
- 304 is in the 3xx range, which means redirection. It is not an error at all.
Related pages
- 301 Moved Permanently The URL has permanently moved and clients should use the new one from now on.
- 302 Found The resource is temporarily at a different URL; keep using the original one.
- 307 Temporary Redirect Like 302, but the client must repeat the request with the same method and body.
- 308 Permanent Redirect Like 301, but the client must repeat the request with the same method and body.
- 303 See Other The request succeeded; now go and GET a different URL to see the result.
- 300 Multiple Choices The requested URL has several representations and the server is not choosing bet
- 305 Use Proxy A deprecated code telling the client to repeat the request through a specific pr
- 306 (Unused) A reserved code that was used in an old draft and is now permanently unassigned.