User agent parser
Break a user agent string into browser, OS and device
Every answer below is a guess. A UA string is a compatibility fiction: Chrome claims to be Safari, which claims to be like Gecko; Edge claims to be Chrome; every browser on iOS is WebKit whatever it calls itself. Anyone can send any string. Since Chrome 101 the version, the Windows version and the macOS version are frozen values that no longer describe the machine. Treat this as a reading of what the string says, not a fact about the visitor — and if you are making a decision in code, feature-detect or use Client Hints instead.
How this parses, and where it will be wrong
These are hand-rolled heuristics for the browsers and platforms that actually turn up, in an order that puts the impostors first: Edge, Opera, Samsung Internet, Vivaldi and Yandex are all tested before Chrome, because every Chromium browser also carries a Chrome token, and Chrome is tested before Safari for the same reason.
Brave, and several other privacy-focused browsers, deliberately send Chrome's exact string — they are not detectable here, by design. A Chromium browser this tool has not heard of reads as plain Chrome. An iPad in desktop mode reports itself as a Mac.
Where the string does not say, the answer is unknown and never a plausible guess at a version number. Each card says whether its value was stated in the string or inferred from it.