Skip to content
304

Not Modified

Redirection (3xx)

The 304 Not Modified status code indicates that the requested resource has not been modified since the version specified by the client's conditional headers (If-Modified-Since or If-None-Match). The server does not return the resource body, and the client should use its cached copy. This mechanism saves bandwidth and improves page load times.

What is HTTP 304 Not Modified?

HTTP 304 Not Modified is a redirection (3xx) status code. The 304 Not Modified status code indicates that the requested resource has not been modified since the version specified by the client's conditional headers (If-Modified-Since or If-None-Match). The server does not return the resource body, and the client should use its cached copy. This mechanism saves bandwidth and improves page load times. Common causes include browser has a valid cached version of the resource and cdn cache validation. This response indicates the server processed the request as expected.

Example Response

HTTP/1.1 304 Not Modified
ETag: "abc123"
Cache-Control: max-age=3600

Common Causes

What to Know

  1. 1. 304 is a success indicator — no fix needed
  2. 2. If you always get 304 but expect new content, check your cache headers
  3. 3. Clear browser cache or disable caching to force a full download
  4. 4. Verify ETag and Last-Modified headers are updating correctly

Frequently Asked Questions

How does the 304 mechanism work?

The client sends a conditional request with If-Modified-Since (timestamp) or If-None-Match (ETag). If the resource has not changed, the server responds with 304 and no body. The client uses its cached version, saving bandwidth.

Does a 304 response include a body?

No. A 304 response must not contain a body. It only includes headers (ETag, Cache-Control, etc.) to confirm the cached version is still valid.

How does this improve performance?

Instead of downloading the full resource again, the server confirms the cached version is current with a small header-only response. For large files, this dramatically reduces bandwidth and load times.

Related Status Codes

200 OK 301 Moved Permanently 302 Found

Related Reading

HTTP Status Codes Cheat Sheet: Every Code Explained → JSON vs YAML vs TOML: Which Config Format to Use →