Samsung Internet is the browser that comes with many Samsung phones and tablets. It is built on Chromium, so WhiskerJS reads it like Chrome on Android: the Chromium-only signals work, nothing is left out on purpose, and the audio output latency is read because it is Android. WhiskerJS also checks for one global variable associated with Samsung’s browser.
At a glance
- Browser class:
chromium(the user agent has aChrome/<number>token). - Excluded components: none.
- Read on Android:
audio_latency. - Samsung-related check:
vendor_flavorsincludessamsungArwhen that global exists. - Lab sample: none.
What works
- Chromium-only components:
device_memory,heap_limit,ua_client_hintsandua_versionsread the same APIs as in Chrome; on a phoneua_client_hintsusually carriesmobile=1and the model and form factors the browser reports. audio_latency: read because the user agent says Android; theAudioContextis closed at once and nothing is played.vendor_flavors: lists which of ten browser-specific globals exist. One of them issamsungAr. Whether a given Samsung Internet version defines it is up to the browser, so treat its presence as a hint, not a rule. The component is in thebrowsergroup of the visitorId.touch_supportandscreen_resolution(larger side first, so rotation does not change it).- Graphics, offline audio, fonts, font preferences, Math, codecs, locale and display preferences.
What is unavailable or blocked
keyboard_layoutuses an API meant for physical keyboards; expectunavailableon Android. It is outside the ids.plugins: mobile builds often list none, and then report the plain valuenone.apple_payandprivate_click: the plain valuenone.webgpu: depends on the browser version, Android version and GPU.ua_client_hintsandua_versionsreporthe=blockedwhen a Permissions Policy refuses the detailed hints.
What WhiskerJS excludes and why
Nothing. The chromium row of the exclusion table is empty. If the browser, a setting or an extension adds noise to canvas or WebGL readback, the double render marks canvas or webgl_image as noisy (render_mismatch) for that run. The known-answer probes also catch noise that is the same on both reads (noisy / seeded_noise, for canvas, webgl_image and audio).
Samsung Internet and Chrome on the same phone
Both are class chromium. Expect the browser group of the structuredId to differ (brands in ua_client_hints, globals in vendor_flavors, possibly codecs), while gpu, device and fonts often match because they follow the phone itself. See Comparing two results.
Integrity flags to expect
headless_markersdoes not apply its “desktop Chrome withoutwindow.chrome” test to user agents withMobileorAndroid; a 0x0 outer window still raises it.automation_webdriverunder WebDriver control, for example in device test farms.software_rendererin emulators that render WebGL in software.- The lie checks if a script overrides browser functions.
Early lab observations
There is no lab data for Samsung Internet yet. The early, small sample at signalsVersion 1 covered Mac Chrome, Mac Safari, iPhone Chrome and iPhone Safari only.
Testing it yourself
Open the live demo in Samsung Internet and in Chrome on the same phone and compare the structuredId groups. The lab mode copies one line per run. Nothing is sent anywhere.
Support table for Samsung Internet
Expected status of every component in this browser at signalsVersion 9, from the support matrix (updated 2026-10-26). Basis "code" means expected from the library code and documentation, not yet measured; "lab" means seen in the early lab sample.
| Component | Status | Basis | Note |
|---|---|---|---|
apple_pay | none | code | No ApplePaySession: reports the plain value none. |
audio | ok | code | noisy / seeded_noise if the audio known-answer probe sees noise. |
audio_latency | ok | code | Read when the user agent says Android. |
browser_class | ok | code | Class chromium. |
canvas | ok | code | noisy / render_mismatch or seeded_noise if an extension or setting adds noise to readback. |
canvas_readback | ok | code | |
color_depth | ok | code | |
color_gamut | ok | code | |
content_blockers | ok | code | none, or the bait names a content blocker hid. |
cpu_architecture | ok | code | |
device_memory | ok | code | From Chromium 146 the value carries the tag ;c146 (new buckets). |
dynamic_range | ok | code | |
font_preferences | ok | code | |
fonts | ok | code | |
fonts_canvas | ok | code | |
forced_colors | ok | code | |
hardware_concurrency | ok | code | Read 16 times; noisy / read_varies if the reads disagree. Some browsers cap or round the value. |
heap_limit | ok | code | |
intl_locale | ok | code | |
keyboard_layout | varies | code | Chromium API meant for physical keyboards; on Android expect unavailable. |
languages | ok | code | |
math | ok | code | |
media_codecs | ok | code | |
noise_profile | ok | code | canvas=exact,webgl=exact,audio=exact on a stock browser; webgl=na without WebGL. |
pdf_viewer | ok | code | |
permissions | ok | code | |
pixel_ratio | ok | code | |
platform | ok | code | |
plugins | varies | code | Mobile builds often list no plugins and then report the plain value none. |
prefers_contrast | ok | code | |
private_click | none | code | No attributionSourceId on anchors: reports the plain value none. |
reduced_motion | ok | code | |
screen_frame | ok | code | |
screen_resolution | ok | code | |
speech_voices | ok | code | Digest of the voice list, or none; some browsers fill the list late. |
storage | ok | code | |
time_zone | ok | code | |
touch_support | ok | code | |
ua_client_hints | ok | code | he=blocked when a Permissions Policy refuses the detailed hints. |
ua_versions | ok | code | |
vendor | ok | code | |
vendor_flavors | ok | code | |
webgl_image | ok | code | noisy / render_mismatch or seeded_noise if an extension or setting adds noise to readback. |
webgl_params | ok | code | Where WebGL 1 is available; unavailable / no_context without it. |
webgl_renderer | ok | code | |
webgl_vendor | ok | code | |
webgpu | varies | code | Depends on browser version, operating system and GPU; needs a secure context. unavailable / no_api without navigator.gpu, no_context without an adapter. |
Questions and answers
Does WhiskerJS have Samsung-specific code?
Only one thing: vendor_flavors checks whether a global named samsungAr exists, as one of ten browser-specific globals. Everything else is the same code as for any Chromium browser.
Is anything excluded in Samsung Internet?
No. It is classed chromium, whose exclusion row is empty.
Is there lab data for Samsung Internet?
No. The early lab sample covered Mac Chrome, Mac Safari, iPhone Chrome and iPhone Safari only.