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.