# 304 Not Modified

Category: [Technical SEO](https://seo-geo-glossary.com/en/glossary/category/technical-seo/) › [HTTP status codes](https://seo-geo-glossary.com/en/glossary/category/technical-seo/http-status-codes/)

**304 Not Modified** is an HTTP status code that tells a client its cached copy of a resource is still current, so the server does not send the content again. It answers a conditional GET or HEAD request.

## How does a 304 response work?
The client sends a validator from an earlier response, either `If-None-Match` with an ETag or `If-Modified-Since` with a date. If the resource has not changed, the server replies with 304 and no body. If it has changed, the server replies with 200 and the full content. MDN lists headers such as `Cache-Control`, `ETag`, `Date` and `Vary` as allowed in a 304.

Google's crawlers support ETag and Last-Modified validators, though not every crawler uses them in each request. For a 304, Google's documentation says the crawler passes on that the content is the same as at the last crawl. In its crawl budget guide, Google lists support for 304 among the ways to reduce server load on large sites.

## Example
```http
GET /page/ HTTP/1.1
If-None-Match: "abc123"

HTTP/1.1 304 Not Modified
ETag: "abc123"
```

## Common mistakes
A server sends 304 for every request, or a 304 for a changed page. The crawler then keeps the old version.

## At a glance

- **Status code:** 304
- **Class:** 3xx (redirection)
- **Duration:** n/a (answer to a conditional request)
- **In Google:** crawler passes on that the content is the same as at the last crawl; otherwise no effect on indexing
- **Request method:** answer to a conditional GET or HEAD, no body
- **Specification:** [RFC 9110, Section 15.4.5](https://www.rfc-editor.org/rfc/rfc9110.html#name-304-not-modified)

Last checked: October 8, 2026

## Cache headers and 304 compared

| Header / status | Request counterpart | What it does | Relevance for Google's crawlers |
|---|---|---|---|
| Cache-Control | – (directives can also appear in requests) | lists directives for caches, e.g. max-age (fresh for N seconds), no-cache (reuse only after revalidation), no-store (do not store) | max-age is optional and helps crawlers decide when to recrawl the URL; Google does not support other caching directives |
| ETag | If-None-Match | identifier for the current version of a resource | supported and recommended by Google because it has no date formatting issues; takes precedence when both validators are present |
| Last-Modified | If-Modified-Since | date and time at which the server believes the resource was last modified | supported; the date must follow the HTTP format, e.g. Fri, 4 Sep 1998 19:15:56 GMT |
| 304 Not Modified | response to a conditional GET or HEAD request | signals that the stored copy is still valid; the response has no body | the crawler tells the next system that the content is the same as at the last crawl; Search may recalculate signals, otherwise no effect on indexing |

Sources: [Google Crawling Infrastructure: Overview of Google crawlers and fetchers, HTTP caching (last updated 2026-06-12)](https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers); [Google Search Central Blog: Crawling December: HTTP caching (2024-12-09)](https://developers.google.com/search/blog/2024/12/crawling-december-caching); [Google Crawling Infrastructure: HTTP status codes, network and DNS errors (last updated 2026-02-04)](https://developers.google.com/crawling/docs/troubleshooting/http-status-codes); [MDN: HTTP caching](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Caching); [RFC 9111: HTTP Caching](https://www.rfc-editor.org/rfc/rfc9111.html); [RFC 9110: HTTP Semantics (8.8.2 Last-Modified, 8.8.3 ETag, 15.4.5 304)](https://www.rfc-editor.org/rfc/rfc9110.html). Last checked: October 8, 2026

## Related terms

- [Last-Modified header](https://seo-geo-glossary.com/en/glossary/last-modified-header/index.md)
- [ETag](https://seo-geo-glossary.com/en/glossary/etag/index.md)
- [Cache-Control](https://seo-geo-glossary.com/en/glossary/cache-control/index.md)
- [Crawl budget](https://seo-geo-glossary.com/en/glossary/crawl-budget/index.md)

## Sources

- [304 Not Modified – MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/304)
- [How HTTP status codes, and network and DNS errors affect Google Search – Google Search Central](https://developers.google.com/crawling/docs/troubleshooting/http-status-codes)
- [Crawl budget management for large sites – Google Search Central](https://developers.google.com/crawling/docs/crawl-budget)
- [HTTP caching of Google's crawlers – Google Crawling Infrastructure](https://developers.google.com/crawling/docs/crawlers-fetchers/overview-google-crawlers)

---

Last updated: October 8, 2026
URL: https://seo-geo-glossary.com/en/glossary/304-not-modified/
