X-Vercel-Cache

The HTTP X-Vercel-Cache response header is an unofficial HTTP header indicating the cache status of a response served through Vercel's CDN.

Note

The X- prefix for non-standard headers is deprecated per RFC 6648.

Usage

Vercel adds the X-Vercel-Cache header to every response served through its edge network. The value describes whether the response came from cache, from the origin, or from static storage. The header applies to static assets and responses where a Cache-Control header enables CDN caching through directives like s-maxage.

For dynamic routes using Vercel's Runtime Cache, the header often shows MISS even when data is served from the runtime layer. Server-side logging or custom response headers provide more accurate signals for runtime cache behavior.

Values

HIT

The HIT value means the response was found in Vercel's edge cache and served directly without contacting the origin server.

MISS

The MISS value means the response was not found in Vercel's edge cache. The request was forwarded to the origin server, and the response is now eligible for caching on future requests.

STALE

The STALE value means the cached response was no longer fresh, but Vercel served the stale copy to the client while fetching an updated version from the origin in the background. This occurs when a stale-while-revalidate directive is present in the Cache-Control header, or when Incremental Static Regeneration (ISR) triggers a background revalidation.

PRERENDER

The PRERENDER value means the response was served from static storage. In Next.js, this occurs for pages generated at build time or on-demand through getStaticPaths with fallback: true. Pages using fallback: "blocking" do not return PRERENDER.

REVALIDATED

The REVALIDATED value means the cached entry was explicitly invalidated (via revalidatePath(), revalidateTag(), or a dashboard purge) and the response was fetched fresh from the origin in the foreground before being served to the client.

BYPASS

The BYPASS value means caching was skipped entirely for the request. This happens when the origin response includes Cache-Control directives like no-cache, private, or no-store, or when the request does not meet Vercel's cacheable response criteria.

Example

A HIT means Vercel already had a cached copy of the resource at the edge. The response was served directly without reaching the origin, resulting in faster delivery.

X-Vercel-Cache: HIT

A MISS means the resource was not in the edge cache. This is common on the first request to a resource after deployment, after a cache purge, or when a resource has never been requested through a given edge region.

X-Vercel-Cache: MISS

A PRERENDER means the page was pre-generated and served from static storage. This appears on statically generated pages in Next.js frameworks using ISR or static generation with dynamic paths.

X-Vercel-Cache: PRERENDER

A STALE means a cached copy existed but was expired. The stale version was served immediately while Vercel fetched a fresh copy from the origin in the background, keeping response times fast for the current visitor.

X-Vercel-Cache: STALE

Takeaway

The X-Vercel-Cache response header reveals how Vercel's CDN handled caching for each request. The status values cover the full lifecycle from cache hits and prerendered pages to background revalidation and origin fetches.

See also

Last updated: March 6, 2026