hints / ua · opt-in

Sec-CH-UA-Form-Factors

Sec-CH-UA-Form-Factors classifies the device (Desktop, Mobile, Tablet, XR, Watch) more precisely than the mobile boolean, behind an Accept-CH opt-in.

requires Accept-CH experimental UA · opt-in
Example
Sec-CH-UA-Form-Factors: "Desktop"
JavaScript
getHighEntropyValues(['formFactors'])
Available since
Chrome 125 (2024)
Engines
Chrome Edge Opera Firefox Safari
References
MDN · Specification

Sec-CH-UA-Mobile compresses the world into one bit, and the world pushed back: tablets, foldables, TVs, watches, cars and headsets all answer ?0 yet want very different experiences. Sec-CH-UA-Form-Factors is the richer answer: a list of device-class tokens.

Accept-CH: Sec-CH-UA-Form-Factors

Sec-CH-UA-Form-Factors: "Desktop"
Sec-CH-UA-Form-Factors: "Mobile"
Sec-CH-UA-Form-Factors: "Tablet", "Foldable"

The vocabulary

The spec currently defines: "Desktop", "Mobile", "Tablet", "XR", "EInk", "Watch", "Automotive", and the combinable "Foldable". It is a list (a folding tablet legitimately reports two tokens), so parse it as a structured-field list of strings, never a single value.

Why it is marked experimental

It shipped in Chrome 125 (2024) and works today across current Chromium, but the token vocabulary is still evolving with the spec, MDN flags the header experimental, and other engines have not signaled adoption. Reasonable to use, with two rules:

  • Treat unknown tokens as forward compatibility, not errors.
  • Always keep a sane default branch ("Desktop"-like behavior) for browsers that send nothing.

In JavaScript

const { formFactors } = await navigator.userAgentData
  .getHighEntropyValues(['formFactors']);
// e.g. ["Desktop"]

Server-side use

The classic case is TV and automotive: an Android-based TV and an Android phone can look identical in the default hints, but "Automotive" or a TV-class token lets an edge worker pick the ten-foot UI on the first request. Until support broadens, treat it as progressive enhancement over the Sec-CH-UA-Mobile + Sec-CH-UA-Model combination.