System / 06

User agent + hints.

Decodes the legacy User-Agent string plus modern UA-Client-Hints (brand, architecture, model, platform version). Plus screen, language, timezone.

Notes

The 'high entropy' fields (architecture, model, exact platform version) are only available in Chromium-based browsers. Safari and Firefox return only the low-entropy subset.

How it works

We read navigator.userAgent, .platform, .language(s), .hardwareConcurrency, .deviceMemory, and assorted screen / DPR / colour depth fields.

If navigator.userAgentData exists, we request high-entropy hints via .getHighEntropyValues(["architecture", "model", "platformVersion", "bitness"]). Results render in the metrics grid below.

Frequently asked

What are UA-Client-Hints?

A modern replacement for the User-Agent string. Instead of a long monolithic string browsers ship, UA-CH delivers structured fields (brand, version, architecture, model, platform, platform version) that servers can request. They're harder to spoof, more accurate, and reduce the passive fingerprint surface.

Why does my User-Agent look identical to my neighbor's?

Browsers have been freezing UA strings on purpose since 2022 to reduce fingerprinting. Chrome reports a fixed version range; iOS Safari reports a generic 'iPhone' regardless of model. The real device-specific info is now behind UA-Client-Hints, which we expose here.

What is high-entropy?

UA-CH splits hints into 'low entropy' (always sent) and 'high entropy' (must be requested explicitly). High-entropy hints include exact platform version, architecture, model, and bitness — fields that uniquely identify your device. We request them here for inspection.

Is reading this dangerous?

It's all data your browser already gives any website you visit, just exposed clearly. Nothing is sent to our servers — the readout is built locally and never leaves your browser. The exercise is for awareness.