Browser Fingerprinting on Samsung Galaxy (Chrome)

Why Chrome's reduced User-Agent string on this Galaxy phone doesn't stop a page from requesting the real device model, and why the WebGL renderer row still exposes the exact GPU chipset.

ZERO UPLOAD · ALL LOCAL
  1. The scan runs automatically when you open this page — no input needed.
  2. Each section shows a group of signals your browser exposes. Rows marked TRACKABLE are the highest-entropy signals used to identify you.
  3. The entropy score at the top estimates how uniquely identifiable your browser is across the web.
  4. Use the Copy buttons next to any row to copy that value to your clipboard.
  5. The Installed Fonts section lists which fonts from a 30-font probe were detected on your system.

Using this tool with the Samsung Galaxy (Chrome)

  • A generic User-Agent header doesn't mean a generic fingerprint Chrome's reduced header hides your exact model from passive server logs, but a page can still request the real model through Client Hints or read it indirectly through the WebGL renderer and deviceMemory APIs.
  • Sec-CH-UA-Model needs no user permission dialog Unlike camera or location access, a site can call getHighEntropyValues() for your device model without showing you a prompt. Access is controlled by the site's own Permissions-Policy header, not by anything you approve.
  • The WebGL renderer row already names this phone's chipset Expect a string like "Adreno (TM) 750" in the WebGL rows above. That value comes from a separate API the User-Agent reduction never restricts.
Scanning browser APIs…
~0 bits

Analysing fingerprint…

27+ bits VERY HIGH
19 – 26 bits HIGH
9 – 18 bits MODERATE
0 – 8 bits LOW

IDENTITY

USER AGENTTRACKABLE
APP VERSION
PLATFORM
VENDOR
WEBDRIVER

HARDWARE

CPU THREADS
DEVICE MEMORY
SCREEN RESOLUTIONTRACKABLE
AVAILABLE SCREEN
COLOUR DEPTH
PIXEL DEPTH
PIXEL RATIO
ORIENTATION
TOUCH POINTS
BATTERY LEVEL
BATTERY CHARGING

GRAPHICS

CANVAS HASHTRACKABLE
WEBGL VENDOR
WEBGL RENDERERTRACKABLE
WEBGL EXT COUNT
WEBGL EXTENSIONS
MAX TEXTURE SIZE
WEBGL 2
WEBGPU

AUDIO

AUDIO FINGERPRINTTRACKABLE
SAMPLE RATE
BASE LATENCY

NETWORK & PRIVACY

ONLINE
DO NOT TRACK
COOKIES ENABLED
CONNECTION TYPE
DOWNLINK
RTT
SAVE DATA

BROWSER ENVIRONMENT

LANGUAGE
LANGUAGESTRACKABLE
TIMEZONETRACKABLE
TIMEZONE OFFSET
PLUGIN COUNT
PLUGINS
LOCAL STORAGE
SESSION STORAGE
INDEXEDDB
WEBSQL
CODEC H.264
CODEC VP8
CODEC VP9
CODEC AV1
CODEC HEVC
SPEECH VOICES
VOICE NAMES

SYSTEM PREFERENCES

COLOUR SCHEME
REDUCED MOTION
CONTRAST
POINTER
HOVER
FORCED COLOURS

INSTALLED FONTS

INSTALLED FONTSTRACKABLE
Show detected fonts (30 probed)

Browser Fingerprinting on Samsung Galaxy (Chrome)

Chrome on this Galaxy phone sends a frozen, generic User-Agent header on every request by default, part of Google's User-Agent Reduction rollout meant to cut down on passive fingerprinting from server logs.1 That header reduction covers what a server sees automatically; it says nothing about what a page's own JavaScript can still ask for. This device already exposes real hardware values through other APIs regardless: navigator.deviceMemory returns this phone's actual RAM tier and the WebGL renderer string names its exact GPU chipset, both untouched by the User-Agent change.

Specifications

Rendering engineChrome / Blink
Default User-Agent headerReduced/frozen string; no model or Android build number by default
navigator.deviceMemoryReal RAM tier returned (e.g. 8 on this flagship class)
WebGL renderer stringFull GPU model exposed, e.g. "Adreno (TM) 750"
High-entropy Client HintsModel retrievable via getHighEntropyValues(), no permission prompt by default

The User-Agent header looks generic, but this Galaxy still hands over its model

Chrome's User-Agent Reduction effort replaced the old, detailed User-Agent string with a standardized format that omits the exact Android build and device model by default.1 On paper that sounds like a meaningful privacy improvement, and for passive server-side header logging, it is one. What it does not do is stop a page's own script from asking for the same information through a different, still-available API, which is exactly what this Galaxy phone's Chrome build allows.

The frozen header only covers passive logging

A server that only inspects the raw User-Agent request header on this device sees a generic Android and Chrome version string with no mention of "Galaxy" or a specific model number. That is a genuine improvement over the pre-reduction format, which used to spell out the device model directly in every request. But the reduction is a change to what gets sent automatically by default, not a restriction on what a page is permitted to ask for once it has loaded and started running its own JavaScript.

Sec-CH-UA-Model is one JS call away, no prompt required

Calling navigator.userAgentData.getHighEntropyValues(['model', 'platformVersion']) from any script running on this page returns the real device model and platform version.2 Access is governed by a Permissions-Policy header the site itself sets, not by a permission dialog shown to you the way camera or microphone access would be. In practice, a site that wants this Galaxy's exact model just asks for it in a single async call, and the reduced default header never enters the picture at all.

Why the hardware APIs matter more here than the header ever did

Even setting Client Hints aside entirely, this Galaxy's Chrome already exposes real hardware values through separate JavaScript APIs that the User-Agent reduction never touched. navigator.deviceMemory returns this phone's actual RAM class rather than a randomized placeholder, and the WebGL renderer string names the exact GPU chipset driving the display.34 Neither API reads from the User-Agent header, so reducing that header has no effect on either one.

The GPU renderer string alone narrows this phone's population

Querying UNMASKED_RENDERER_WEBGL on this device returns a string in the form "Adreno (TM) 750," directly naming the Qualcomm chipset inside it, the same behavior CapyToolkit's own Android Chrome guide documents for Galaxy hardware generally.3 Combined with the real RAM tier from deviceMemory, a script can classify this phone's performance tier and chipset family without ever touching the frozen User-Agent string or asking for a single Client Hint, which is why the header reduction alone is a smaller privacy win on this specific configuration than it might first appear.5

Two phones marketed under the same Galaxy model name can still ship with different chipset revisions across regions or production runs, and the renderer string reveals that difference directly where a rounded model name would not. That is a meaningful narrowing signal on top of whatever the model string itself already provides, independent of anything the User-Agent header does or doesn't send. Combining the renderer string with the RAM tier from deviceMemory and the screen dimensions reported through screen.width and screen.height gives a script three independently sourced hardware values to cross-reference, none of which the User-Agent reduction was ever designed to touch in the first place.

Sources
  1. 1.

    Google Chrome, "Improving user privacy and developer experience with User-Agent Client Hints," developer.chrome.com, accessed August 2026. https://developer.chrome.com/docs/privacy-security/user-agent-client-hints

  2. 2.

    Mozilla Developer Network, "NavigatorUAData: getHighEntropyValues() method," developer.mozilla.org, accessed August 2026. https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/getHighEntropyValues

  3. 3.

    Mozilla Developer Network, "WEBGL_debug_renderer_info," developer.mozilla.org, accessed August 2026. https://developer.mozilla.org/en-US/docs/Web/API/WEBGL_debug_renderer_info

  4. 4.

    Khronos, "WebGL WEBGL_debug_renderer_info Extension Specification," khronos.org, accessed August 2026. https://registry.khronos.org/webgl/extensions/WEBGL_debug_renderer_info/

  5. 5.

    W3C, "Device Memory API," w3.org, accessed August 2026. https://www.w3.org/TR/device-memory/

FAQ