HTTP 304 Not Modified

HTTP 304 Not Modified indicates the client must use a different URI to complete the intent. Redirect correctness depends on Location and caching headers, and different clients handle redirects differently—especially for non-GET requests.

Try it (live endpoint)

Response includes the status code, standard headers (including Content-Type), and a small diagnostic JSON body describing the request and returned status.

curl -i "https://httpstatus.com/api/status/304"
Try in playground

Meaning

Indicates that the resource has not been modified since the version specified by the request headers (If-None-Match or If-Modified-Since). The client should use its cached copy.

What it guarantees
  • A different URI is involved to complete the intent.
  • The representation has not changed since the client’s validator.
What it does NOT guarantee
  • All clients will automatically follow the redirect.
  • The redirect target is safe to cache unless headers allow it.
  • A client will receive a response body.

When to use this status

  • GET is conditional (If-None-Match / If-Modified-Since) and content is unchanged.
  • CDN/origin revalidation where cached content remains valid.
  • Bandwidth-sensitive clients using validators for large representations.

When NOT to use this status (common misuses)

Redirecting without a stable Location target.
Clients fail to follow; crawlers lose canonical signals.
Using 301/302 for non-GET methods without understanding method rewriting.
Clients can drop bodies or change methods, causing data loss and client bugs.
Redirect loops or long chains.
Crawlers waste crawl budget; clients hang; retries amplify load.
Returning a body with 304 or changing validators incorrectly.
Caches become inconsistent; clients may serve stale or corrupted content.

Critical headers that matter

Location
Tells clients where to go next.
Redirects fail or loop; crawlers lose canonical target.
Cache-Control
Controls whether redirects are cached.
Temporary redirects become sticky; permanent redirects never stick.
Vary
Prevents caches mixing redirect variants.
CDNs serve the wrong redirect for different hosts/headers.
ETag / Last-Modified
Validators must align with cached representation.
Caches serve stale or inconsistent content.

Tool interpretation

Browsers
Follows Location for navigations; redirect caching can make behavior sticky. Redirect code choice affects method/body handling.
API clients
May not auto-follow; strict clients require explicit redirect handling. Incorrect redirect semantics can drop bodies or change methods.
Crawlers / SEO tools
Uses redirects for canonicalization; long chains/loops waste crawl budget and dilute signals.
Uptime monitors
Typically marks success; advanced checks may flag header anomalies or latency.
CDNs / reverse proxies
Can cache redirects; Location/Vary/Cache-Control correctness drives global consistency.

Inspector preview (read-only)

On this code, Inspector focuses on semantics, headers, and correctness warnings that commonly affect clients and caches.

Signals it will highlight
  • Status semantics vs method and body expectations
  • Header sanity (Content-Type, Cache-Control, Vary) and evidence completeness
  • Redirect chain length, loops, Location presence, protocol safety
Correctness warnings
  • Body present with 304 is incorrect; validators must match cached representation.

Guided Lab outcome

  • Reproduce HTTP 304 Not Modified using a controlled endpoint and capture the full exchange.
  • Practice distinguishing status semantics from transport issues (redirects, caching, proxies).
  • Validate redirect correctness (Location, hop count, protocol safety) and SEO impact.

FAQ

Should clients retry on HTTP 304?
Usually no—treat it as a successful final response unless your domain requires revalidation.
Is HTTP 304 cacheable?
Only if Cache-Control/validators allow it. Do not assume cacheability from the status alone.
Which headers matter most for HTTP 304?
Content-Type and Cache-Control are the baseline. Some codes also require Location, WWW-Authenticate, or Retry-After.
How does this affect monitoring?
Redirects are policy-dependent; loops and long chains cause false positives and user impact.
How does this affect crawlers/SEO?
Redirect correctness controls canonicalization and crawl budget.
What should error responses include?
If a body is returned, keep it consistent and typed via Content-Type.

Client expectation contract

Client can assume
  • A different URI is involved; Location may be required.
Client must NOT assume
  • Redirects will be followed automatically by all clients.
Retry behavior
Retries are generally unnecessary; treat as final unless domain rules require revalidation.
Monitoring classification
Redirect (policy-dependent)
Validate Location, caching headers, and chain behavior. Redirect loops/chains should alert.

Related status codes

303 See Other
The response to the request can be found under another URI using a GET method.
305 Use Proxy
DEPRECATED. Originally indicated that the requested resource must be accessed through a proxy. Deprecated in RFC 7231 due to security concerns and should not be used.