HTTP 304 Not Modified — Meaning, Causes & How to Fix
The resource has not changed since the version specified by the request headers; use the cached copy.
- Code
- 304
- Name
- Not Modified
- Class
- 3xx Redirection
- Specification
- RFC 9110 §15.4.5
- Cacheable by default
- Updates the client’s stored response
What HTTP 304 means
304 Not Modified answers a conditional GET or HEAD (with If-None-Match or If-Modified-Since). It says the client’s cached copy is still valid, so no body is sent. It is not really a redirect — it saves bandwidth and speeds up repeat visits.
Common causes
- A browser or crawler revalidating a cached copy using an
ETagorLast-Modifieddate.
How to fix it
For site owners
- Send
ETagand/orLast-Modifiedso clients can revalidate. - Never send a body with 304, and keep the ETag stable when content has not changed.
For visitors & developers
- A 304 in DevTools means the browser used its cache — that is good, not an error.
SEO impact
Positive. Google documents support for conditional requests; answering 304 when nothing changed saves crawl resources on large sites. It must only be sent when the content really is unchanged.
Example 304 response
HTTP/1.1 304 Not Modified
ETag: "33a64df5"
Cache-Control: max-age=600
Related status codes
Check or look up another code
Search and filter every code in the HTTP Status Codes tool, browse the full list by class, or read HTTP status codes explained: the complete developer guide.
Open HTTP Status Codes tool →All status codesFrequently asked questions
What does HTTP 304 mean?
HTTP 304 Not Modified is a 3xx Redirection status code. The resource has not changed since the version specified by the request headers; use the cached copy.
Is 304 an error?
No. It means “your cached version is still current”, which saves a download.
Which specification defines 304?
It is defined in RFC 9110 §15.4.5.
Is a 304 response cacheable?
A 304 has no body of its own. It tells the cache its stored copy is still valid and updates that copy’s headers and freshness.