HTTP status code 304 — Not Modified

Quick answer

Status code 304 (Not Modified): Cached copy is still valid. Response to conditional GET with If-None-Match / If-Modified-Since.

Response to conditional GET with If-None-Match / If-Modified-Since.

304 has no body — the client should reuse its cached representation. Wire ETag or Last-Modified correctly on the origin.

Common causes

How to fix it

This is expected behavior, not an error — use your cached copy. If you always want fresh data, drop the conditional headers.

All HTTP status codesJSON Formatter

Related: 302301307308400401

Frequently asked questions

What is status code 304?

304 Not Modified: Cached copy is still valid. Response to conditional GET with If-None-Match / If-Modified-Since.

When should I expect HTTP 304?

304 has no body — the client should reuse its cached representation. Wire ETag or Last-Modified correctly on the origin.

What usually causes HTTP 304?

Browser or CDN revalidating a cached asset; A client explicitly sending If-None-Match on a polling request.

How do I fix HTTP 304?

This is expected behavior, not an error — use your cached copy. If you always want fresh data, drop the conditional headers.

Where can I see all status codes?

Open the HTTP status codes hub on TryDevSnip for the full reference list.

Does TryDevSnip log my API traffic?

No. These pages are static reference. TryDevSnip does not proxy or inspect your HTTP calls.

TryDevSnip