HTTP Status Codes

HTTP 304 Not Modified

304
LowWeb ServerReference page

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.

HTTP 304 visual summary showing a cached browser copy validated against the server and reused without a new response body
Visual summary: 304 means the client's cached copy still matches the current resource, so no fresh response body is sent.

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.

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

01

A web browser revalidates cached CSS, JavaScript, and images using ETag identifiers

02

An API client periodically checks a resource endpoint without downloading identical payload bodies

03

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.