DD
DevDash

HTTP 304 Not Modified: What It Means and When You See It

Quick Answer

HTTP 304 Not Modified means the cached version of the resource is still valid. The server is telling the client to use its cached copy, saving bandwidth.

How HTTP 304 Works

HTTP 304 Not Modified is a caching response. The client sends a conditional GET with If-None-Match (ETag) or If-Modified-Since headers. If the resource has not changed, the server returns 304 with no body - the client uses its cached copy. This saves bandwidth and reduces server load. 304 responses do not include a body; the cached response body is used. The browser handles this automatically for HTML pages and assets.

Implementing ETags for 304

Node.js/Express: the etag package generates ETags automatically. Set Cache-Control: no-cache to force revalidation on each request while still benefiting from 304. Example: res.set("ETag", hash(content)); res.set("Cache-Control", "no-cache"); if (req.headers["if-none-match"] === etag) { res.sendStatus(304); return; } res.send(content). In Next.js, static assets get ETags automatically. API routes need manual ETag implementation for conditional responses.

Try the interactive tool

Convert any value instantly — no sign-up required

Open tool →

Frequently Asked Questions

Related Values

Want API access + no ads? Pro coming soon.