openstatus logoPricingDashboard

CDN Cache Checker

Check if your CDN is actually caching from 28 regions worldwide. See cache HIT/MISS per region, which edge served you, and which CDN a website uses.

Checks run live — results are not stored.

Start monitoring your cache

Cache status per region

See HIT, MISS, EXPIRED, STALE or DYNAMIC for every region — read straight from your CDN's response headers, not guessed from latency.

CDN detection & edge PoP

Identify which CDN serves a website and which edge location (PoP) answered each region, with anycast vs unicast topology inference.

Monitor it continuously

Turn a one-off check into a monitor with an assertion on the cache header — get alerted the moment a region stops caching.

How CDN caching works

A CDN keeps copies of your content on edge servers close to your users. When a request arrives, the edge either serves its cached copy (a HIT) or forwards the request to your origin (a MISS) and usually stores the response for next time.

Caches are regional: a HIT in Frankfurt says nothing about Tokyo. That is why checking from a single location — or only from your own machine — routinely hides cold or misconfigured regions. This tool runs the same request from 28 regions at once and reads the cache headers from every response.

Reading cache headers: HIT vs MISS vs EXPIRED vs STALE

Each provider reports cache state in its own header. The checker normalizes them into one status:

StatusMeaning
HITServed from the edge cache.
MISSNot in cache — fetched from origin. The next request should be a HIT.
EXPIREDFound in cache but past its TTL — revalidated against origin.
STALEServed from cache while revalidating in the background (stale-while-revalidate).
BYPASSCaching explicitly skipped, e.g. a no-cache rule or cookie.
DYNAMICNot eligible for caching (often HTML or API responses).
UNKNOWNNo cache headers detected — there may be no CDN at all.

The vendor headers behind it:

CDNHeaderExample
Cloudflarecf-cache-statusHIT
Amazon CloudFrontx-cacheHit from cloudfront
Fastly / Varnishx-cacheHIT, MISS
Akamaix-cacheTCP_HIT
Vercelx-vercel-cacheSTALE
RFC 9211 (Netlify, …)cache-status"Netlify Edge"; hit
Genericage + cache-controlage: 842

Anycast vs unicast

If every region receives a response from the same edge IP, the CDN is using anycast: one IP announced from all locations, routed by the network to the nearest edge (Cloudflare, Fastly). If regions resolve to different IPs, the CDN uses unicast/GeoDNS: DNS decides per region (CloudFront, Akamai). Neither is wrong — anycast tends to fail over faster, GeoDNS gives finer routing control — but knowing which one you run matters when debugging regional anomalies.

Check cache headers from your terminal

For a quick single-location check, inspect the headers with cURL:

curl -sI https://example.com/asset.js | grep -iE 'cf-cache-status|x-cache|x-vercel-cache|age|cache-control'

Need a more complex request? Build it with the cURL Builder. Want latency instead of cache state? Use the Global Speed Checker.


With OpenStatus, you can:

  • Verify your CDN serves cache HITs from every region after a config change.
  • Debug cf-cache-status: MISS and origin load spikes region by region.
  • Detect which CDN a website uses and which edge PoP answered.
  • Monitor cache status continuously with header assertions and get alerted when caching breaks.

If you'd like to request additional test regions or providers, feel free to contact us at ping@openstatus.dev.