v145 · Web APIs · UA-CH Migration

UA-CH Migration

Move brittle User-Agent parsing to privacy-preserving User-Agent Client Hints. This console compares the reduced string, probes navigator.userAgentData, requests only selected high-entropy hints, and inspects the HTTP headers a server actually receives.

live browser signals

Reduced User-Agent string

The legacy string is still sent, but Chrome freezes or coarsens detailed tokens so it is no longer a reliable source for patch version, OS version, or device model.

not checked

Waiting for browser data...

    Low-entropy UA-CH

    Browsers that support UA-CH expose coarse structured values without an explicit high-entropy request.

    not checked

    Waiting for UA-CH feature detection...
    High-entropy hints to request in JavaScript and HTTP

    JavaScript result or fallback

    Select hints, then request them with getHighEntropyValues().

    privacy-preserving migration planner

    Choose the product decisions you actually need. The plan keeps low-entropy checks off Accept-CH and asks the server to opt in only to high-entropy headers needed for the selected jobs.

    Privacy posture

    Calculating...

    Accept-CH response

    Accept-CH:

    Vary response

    Vary:

    request and response header inspection

    The route below is scoped to this concept. It returns JSON with the request headers the server saw and also sends real Accept-CH, Vary, and Cache-Control response headers.

    No request sent yet

    Use the buttons above to inspect the live HTTP exchange.

    signal mapping

    Old UA parse UA-CH replacement Privacy behavior
    Browser name and major version navigator.userAgentData.brands / Sec-CH-UA Low entropy. Sent by default where UA-CH is supported.
    Mobile indicator navigator.userAgentData.mobile / Sec-CH-UA-Mobile Low entropy. Prefer capability and responsive checks when possible.
    OS family navigator.userAgentData.platform / Sec-CH-UA-Platform Low entropy. Coarse platform only.
    OS version platformVersion / Sec-CH-UA-Platform-Version High entropy. Request only when the OS version changes behavior.
    Full browser version fullVersionList / Sec-CH-UA-Full-Version-List High entropy. Use for narrow compatibility workarounds, not analytics defaults.
    CPU or device model architecture, bitness, model / matching Sec-CH-UA-* headers High entropy. Pair with Accept-CH and Vary so caches stay correct.

    Fallback rule: if navigator.userAgentData or a requested hint is unavailable, keep the site on a capability-based default. Do not rebuild the old fingerprint by collecting every high-entropy hint on every request.

    see also