HTTP Status Codes
HTTP 304 Not Modified
Not Modified — cached copy on client remains valid and fresh
A 304 Not Modified status is an implicit redirection informing the client that the cached copy of the resource is still current and does not need to be retransmitted. The server omits the response body entirely, saving substantial network bandwidth and speeding up page load times.
Visual summary
A quick reference view of how HTTP 304 confirms that a stored representation is still current, so the client reuses it instead of downloading the body again.

What 304 Means
The shortest useful reading of this status code.
Not Modified means cached copy on client remains valid and fresh.
For cache validation, the key distinction is that 304 confirms an existing stored representation rather than transferring a fresh response body.
Quick read
Cached copy still valid
A 304 means the client should reuse its stored representation because the resource has not changed.
Technical Context
How this status behaves without turning the page into a repair guide.
Cache validation
The 304 response is generated when a client makes a conditional request using validators such as 'If-None-Match' (comparing entity tags / ETags) or 'If-Modified-Since' (comparing timestamps). If the server determines the resource has not changed, it returns 304 without a body.
Conditional headers
This mechanism is fundamental to web performance. The response includes fresh cache-control and metadata headers, allowing the client to update its local cache expiration without re-downloading existing content.
Related HTTP Codes
Nearby HTTP status codes help clarify how 304 differs inside the same response family.
304
Not Modified
cached copy on client remains valid and fresh
200
OK
the request succeeded and the server returned the expected response
412
Precondition Failed
a conditional header did not match current resource state
428
Precondition Required
origin server requires the request to be conditional
Common Causes
Conditional GET request matching the stored ETag validator via If-None-Match
A common condition that triggers a 304 response when the web server evaluates the transaction.
Conditional request matching the last modification timestamp via If-Modified-Since
A common condition that triggers a 304 response when the web server evaluates the transaction.
Browser cache revalidation confirming unchanged static assets
A common condition that triggers a 304 response when the web server evaluates the transaction.
Typical Scenarios
A web browser revalidates cached CSS, JavaScript, and images using ETag identifiers
An API client periodically checks a resource endpoint without downloading identical payload bodies
A CDN edge proxy validates cached assets with the origin server before serving them to edge clients
What To Know
A 304 response is a positive optimization signal indicating successful cache revalidation. It requires no remedial action and confirms that bandwidth was saved.
Frequently Asked Questions
Common interpretation questions about HTTP 304.
No. A 304 is generally a normal cache-validation response. It means the client can keep using its stored representation instead of downloading the body again.
No. It sits in the 3xx family, but it does not move the client to another URL. It only confirms that the existing cached copy is still valid.
Because the point of 304 is to avoid sending the representation again. The client already has the body and only needed confirmation that it has not changed.