Skip to content

3xx Redirection

304 Not Modified

The cached copy is still valid; nothing new to download.

What 304 means

The answer to a conditional request (If-None-Match or If-Modified-Since): the resource hasn't changed since the client's cached version, so the server sends no body. It saves bandwidth.

Common causes

  • The client sent an ETag or date it already has and the resource is unchanged.

How to fix it

If you're calling an API

  • Use your cached copy. If you see 304 without a cache, stop sending If-None-Match / If-Modified-Since.

If you run the server

  • Send ETag or Last-Modified headers so clients can make conditional requests.

Should you retry?

No need: use the cached version.

Example response

HTTP
HTTP/1.1 304 Not Modified
ETag: "33a64df5"

Related headers: ETag, If-None-Match, Last-Modified, If-Modified-Since.

Defined in: RFC 9110 (HTTP Semantics). 304 is a redirection.

HTTP 304 FAQ

What does HTTP 304 mean?

304 Not Modified: The cached copy is still valid; nothing new to download. The answer to a conditional request (If-None-Match or If-Modified-Since): the resource hasn't changed since the client's cached version, so the server sends no body. It saves bandwidth.

Is 304 a client or server error?

Neither: 304 is a redirection response (3xx). Further action (usually following a new URL) is needed.

How do I fix a 304 error?

Use your cached copy. If you see 304 without a cache, stop sending If-None-Match / If-Modified-Since.

Should I retry after a 304?

No need: use the cached version.

Other 3xx status codes

All HTTP status codes