HTTP Cache-Control Decoder
Paste any HTTP cache-related header (or several) and get a plain-English explanation. Decodes the directives, calls out common misconfigurations (no-cache vs no-store confusion, missing s-maxage on shared caches, contradictory directives), and shows the effective caching behavior across browsers, CDNs, and shared proxies.
How to use the HTTP Cache-Control Decoder
Paste raw HTTP headers (the kind you see in your browser's devtools Network panel response headers). The decoder picks out cache-related ones (Cache-Control, Expires, ETag, Last-Modified, Vary, Age, Pragma) and explains each directive. Misconfigurations are flagged with warning notices.
About HTTP Cache-Control Decoder
HTTP caching is the single most powerful performance lever in web development \xE2\x80\x94 a properly cached asset takes 0ms to load on subsequent views. The catch is that the rules are baroque. Cache-Control alone has 15+ possible directives, some of which contradict each other in subtle ways. no-cache doesn't mean "don't cache"; no-store does. private vs public affects shared proxies. must-revalidate changes how stale-cached responses behave. ETag and Last-Modified provide conditional GET, but only if your server actually returns 304 when they match.
This decoder is a sanity check. It tells you what your headers actually mean, flags configurations that confuse common caches (Cloudflare, Varnish, browsers, mobile network proxies), and explains the rules in human terms. Use it when reviewing your CDN config, debugging "why didn't this asset cache" mysteries, or learning HTTP caching for the first time.
Common use cases
- CDN config review — sanity-check headers before publishing.
- Cache miss debugging — figure out why your "1 year" cache isn't holding.
- Mobile network optimisation — confirm headers tell mobile proxies the right thing.
- Learning HTTP caching — see each directive explained against real values.
Frequently asked questions
What's the difference between no-cache and no-store?
no-store means the cache must not store the response. no-cache means the cache CAN store it but must revalidate (304-or-fresh) every time before serving. Despite the name, no-cache enables caching.