Client request
IMPORTANT: As announced in October and again in November of 2024, Fastly began making phased updates to its device detection library that will continue regularly through January of 2025. After that time, the existing library will no longer be supported.
These variables describe the HTTP request received by Fastly.
Device detection
Fastly exposes a number of VCL variables describing the client hardware and software
based on known User-Agent
strings. The data is automatically updated on a
regular basis.
The data in these variables is based on mapping client-provided User-Agent
headers
to an open source dataset provided by Fastly. Fastly periodically updates the dataset
to have the most recent data, but we cannot guarantee its accuracy.
Presence of data
It's possible for data to be not known for a particular User-Agent
. When not
present, numerical variables are set to -1
, booleans are set false
, and
strings are set to the empty string.
It's possible to distinguish data being not known from data being explicitly
set false
by making use of the client.identified
variable.
client.identified
is set when all features are identified, and so a false
value for a property can be seen to be meaningful.
To find out more about variables that provide device vendor, model, and manufacturer details, contact your Fastly account manager or sales representative, or contact support@fastly.com.
- client.bot.name
- client.browser.name
- client.browser.version
- client.class.bot
- client.class.browser
- client.class.checker
- client.class.downloader
- client.class.feedreader
- client.class.filter
- client.class.masquerading
- client.class.spam
- client.display.height
- client.display.ppi
- client.display.touchscreen
- client.display.width
- client.identified
- client.os.name
- client.os.version
- client.platform.ereader
- client.platform.gameconsole
- client.platform.hwtype
- client.platform.mediaplayer
- client.platform.mobile
- client.platform.smarttv
- client.platform.tablet
- client.platform.tvplayer
- fastly_info.h2.is_push
- fastly_info.host_header
- req.body
- req.body.base64
- req.body_bytes_read
- req.bytes_read
- req.enable_range_on_pass
- req.enable_segmented_caching
- req.hash_always_miss
- req.hash_ignore_busy
- req.header_bytes_read
- req.headers
- req.http.{NAME}
- req.is_background_fetch
- req.is_purge
- req.method
- req.postbody
- req.proto
- req.request
- req.url
- req.url.basename
- req.url.dirname
- req.url.ext
- req.url.path
- req.url.qs
- req.xid
- time.elapsed
- time.elapsed.msec
- time.elapsed.msec_frac
- time.elapsed.sec
- time.elapsed.usec
- time.elapsed.usec_frac
- time.end
- time.end.msec
- time.end.msec_frac
- time.end.sec
- time.end.usec
- time.end.usec_frac
- time.start
- time.start.msec
- time.start.msec_frac
- time.start.sec
- time.start.usec
- time.start.usec_frac