Cf-Cache-Status

The HTTP Cf-Cache-Status response header is an unofficial, Cloudflare-specific header indicating how Cloudflare handled caching for a given request.

Usage

The Cf-Cache-Status header is added by Cloudflare to every response served through its network. The value tells whether the response was served from cache, fetched from the origin, or skipped caching entirely.

Understanding these values is essential for verifying caching behavior, diagnosing performance issues, and confirming cache rules work as expected. The header works alongside other cache-related headers like Cache-Control and Age to give a complete picture of how a resource was delivered.

Directives

HIT

The HIT value means the resource was found in Cloudflare's cache and served directly without contacting the origin server.

MISS

The MISS value means the resource was not in Cloudflare's cache. The request was forwarded to the origin server, and the response is now stored in cache for future requests. Responses Cloudflare chooses not to store return BYPASS instead of MISS.

EXPIRED

The EXPIRED value means the resource was in the cache but had exceeded its time-to-live. Cloudflare fetched a fresh copy from the origin server.

STALE

The STALE value means the cached resource was expired and served as-is because Cloudflare was unable to reach the origin server to retrieve an updated copy.

BYPASS

The BYPASS value means Cloudflare decided at response time to skip caching. Responses with Cache-Control no-store or private directives or Vary: * always produce BYPASS. A Set-Cookie header produces BYPASS under specific configurations, and cache rules set to ignore or strip the header keep the response cacheable. Directives like no-cache, max-age=0, and s-maxage=0 produce BYPASS only when Origin Cache Control is disabled. With Origin Cache Control enabled, these directives produce REVALIDATED or EXPIRED instead. An Authorization request header produces BYPASS when Origin Cache Control is enabled and the response lacks public, s-maxage, or must-revalidate.

REVALIDATED

The REVALIDATED value means the cached resource was confirmed as still valid through a conditional request to the origin. The origin responded the content was unchanged, and the cached version was served.

UPDATING

The UPDATING value means the cached resource was expired but served from cache while Cloudflare fetches a fresh copy from the origin in the background. This asynchronous revalidation keeps response times fast for popular resources.

DYNAMIC

The DYNAMIC value means Cloudflare decided at request time the resource is not eligible for caching based on default behavior and current configuration. Every request for this resource goes directly to the origin server. DYNAMIC reflects a request-time decision, while BYPASS reflects a response-time decision driven by headers the origin returned.

NONE/UNKNOWN

The NONE/UNKNOWN value means Cloudflare generated the response internally without reaching the origin server or cache. This occurs when a Cloudflare Worker produces a response, when WAF rules block a request, or when a redirect fires before cache logic runs.

Example

A HIT means Cloudflare already had a copy of the resource stored at the edge. The response was served directly from Cloudflare without contacting the origin server, resulting in faster delivery.

Cf-Cache-Status: HIT

A DYNAMIC means the resource is not eligible for caching. This is common for API responses, personalized pages, and content where the Cache-Control header signals the response is private or varies per request. Every request for a DYNAMIC resource goes straight to the origin.

Cf-Cache-Status: DYNAMIC

An EXPIRED means Cloudflare had a cached copy, but the resource's time-to-live had passed. Cloudflare fetched a fresh version from the origin server and updated its cache.

Cf-Cache-Status: EXPIRED

A MISS means Cloudflare did not have the resource in cache at all. This is typical for the first request to a resource after a cache purge or when a resource has never been requested through a particular edge data center. The response is fetched from the origin and cached for future requests.

Cf-Cache-Status: MISS

See also

Last updated: August 11, 2026