X-Timer

The HTTP X-Timer response header is an unofficial HTTP header added by Fastly to report internal timing data for a request.

Note

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

Usage

Fastly adds the X-Timer header to every response passing through its network. The value is a comma-separated string of event codes and timestamps recording how long the request spent inside the CDN.

The header is primarily useful for performance debugging. By comparing the start timestamp with the Varnish End duration, operators and developers see how much time the CDN spent processing a request versus how much time the origin server consumed. A small VE value on a cache hit confirms the response was served from memory. A large VE value on a miss reveals slow origin response times.

When a Fastly service uses shielding, the header contains an additional pair of VS and VE entries representing the shield node's processing time.

Values

S (Start)

The S field is a Unix timestamp in seconds, recorded to microsecond precision, marking the moment Fastly first received the request. For example, S1709123456.789012 means the request arrived at Unix time 1709123456.789012.

VS (Varnish Start)

The VS field marks the start of Varnish processing within a cache node. The value is typically 0, indicating processing began immediately after request receipt.

VE (Varnish End)

The VE field is the total time in milliseconds the cache node spent handling the request. On a cache hit, this value is often 0 or a single digit because serving from memory takes less than a millisecond. On a cache miss, the value reflects the round-trip time to the origin server plus any processing overhead.

Example

A straightforward cache hit served from memory. The request arrived at Unix time 1770690977.981692. The VE value of 2 means the edge node spent approximately 2 milliseconds processing the request, confirming the response was served from cache.

X-Timer: S1770690977.981692,VS0,VE2

A cache miss where the origin server responded slowly. The VE value of 409 means the edge node spent 409 milliseconds waiting for the origin server to fulfill the request.

X-Timer: S1770286999.047265,VS0,VE409

When shielding is active, an extra VS field appears. The format becomes VS0,VS0,VE<n>: one VS0 for the shield node start, one VS0 for the edge node start, and a single VE recording total processing time across both layers. Here the combined time for shield and edge was 69 milliseconds.

X-Timer: S1768296487.178015,VS0,VS0,VE69

The X-Timer header works alongside X-Served-By and X-Cache to give a complete picture of CDN behavior. Together, these headers reveal which nodes handled the request, whether the response was cached, and how long each layer took.

X-Served-By: cache-lga21984-LGA, cache-pdx12334-PDX
X-Cache: MISS, HIT
X-Timer: S1768296487.178015,VS0,VS0,VE69

Takeaway

The X-Timer header exposes internal Fastly timing data as a compact string of event codes and timestamps. The VE value is the most actionable field, directly measuring how many milliseconds the CDN spent processing a request. The standard Server-Timing header provides a similar timing transparency mechanism in a cross-vendor format.

See also

Last updated: March 6, 2026