STRING, read-only.

Available inall subroutines.

A string representation of the primary client platform hardware. The most commonly used device types are also identified via boolean variables. Because a device may have multiple device types and this variable only has the primary type, we recommend using the boolean variables for logic and using this string representation for logging.

Device Atlas provides a full list of potential values.

A client.platform.hwtype value of TV refers to a Smart TV as in client.platform.smarttv, rather than a TV Player as in client.platform.tvplayer.


An example categorizing hardware types to an approximately relevant emoji, using a table in VCL. You can use this example to build your own table for values mapping to hardware types:

table hwtype {
"Camera": "%u{1F4F7}",
"Cellular Gateway": "%u{1F4F1}",
"Data Collection Terminal": "%u{1F4CA}",
"Desktop": "%u{1F5A5}",
"Digital Home Assistant": "%u{1F3E0}",
"Digital Signage Media Player": "%u{1F5BC}",
"Embedded Network Module": "%u{1F5A7}",
"eReader": "%u{1F4D7}",
"Fixed Wireless Phone": "%u{FE0F}",
"Games Console": "%u{1F3AE}",
"Geolocation Tracker": "%u{1F30D}",
"Glasses": "%u{1F453}",
"Media Player": "%u{1F4FB}",
"Mobile Phone": "%u{1F4F1}",
"Payment Terminal": "%u{1F4B3}",
"Plug-in Modem": "%u{1F5A5}",
"Refrigerator": "%u{1F3E0}",
"Set Top Box": "%u{1F4FA}",
"SIM Adaptor": "%u{1F4F1}",
"Single-board Computer": "%u{1F353}",
"Tablet": "%u{1F48A}",
"TV": "%u{1F4FA}", # smart TV
"Vehicle Multimedia System": "%u{1F69B}",
"Vehicle Phone": "%u{1F69B}",
"Weighing Scale": "%u{1F3E0}",
"Wireless Hotspot": "%u{1F4F6}",
"Wristwatch": "%u{231A}",
# special cases
"Bot": "%u{1F916}",
"Unknown": "%u{2754}"
sub client_class_emoji STRING {
return table.lookup(hwtype,
if (, "Bot",
if (client.platform.hwtype != "", client.platform.hwtype, "Unknown")));