X-Vercel-Cache

Every response from Vercel's edge network includes the X-Vercel-Cache unofficial response header, reporting the cache status of the resource at the CDN layer.

Note

The "X-" naming convention for HTTP headers, "X" referring to "experimental", has been deprecated and needs to be transitioned to the formal naming convention for HTTP headers.

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, such as a page prerendered at build time. In Next.js, statically generated pages 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 Vercel skipped the cache on purpose for the request and served fresh content without consulting the cache at all. Three conditions trigger it: a Draft Mode request carrying the __prerender_bypass cookie, a request matching an experimentalBypassFor Prerender Bypass rule, or a request from a known crawler. Responses that fail Vercel's cacheability criteria surface as MISS instead.

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

Note

Vercel preview deployments and outdated production deployments also receive an X-Robots-Tag noindex response, which keeps non-canonical builds out of search results.

See also

Last updated: August 11, 2026