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 a
third-party dataset owned and provided by DeviceAtlas. Fastly periodically
updates the dataset to have the most recent Device Atlas data, but we cannot guarantee its accuracy.
WARNING: Device information from DeviceAtlas, including data streamed by our log streaming service, may be used only in connection with your use of Fastly services. Use of DeviceAtlas data for any other purpose requires a license from Afilias Technologies Ltd, the supplier of DeviceAtlas.
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