[Compare](https://cdpfleet.com/docs/compare) / browsers

# Naver Whale vs Chrome

Whale 5.41 runs on Chromium 156, one major behind Chrome 157, names itself in the user agent and client hints, and now sends the same TLS hello as Chrome. What that means for driving it and for how sites see it.

[Naver Whale](https://cdpfleet.com/docs/browsers/whale) [Google Chrome](https://cdpfleet.com/docs/browsers/chrome)

[Naver Whale](https://cdpfleet.com/docs/browsers/whale) is Naver's Chromium browser, the one that ships with Naver services in Korea. On the fleet, Whale 5.41.429.3 stable is built on **Chromium 156.0.8078.70**, while [Chrome](https://cdpfleet.com/docs/browsers/chrome) stable is 157.0.8103.38 — measured the same night, 2026-11-08. Both run headful by default and cost the same two threads. The questions for a scraper: does Whale look like Chrome on the wire, does it hide that it's Whale, and what does running a Chromium major behind cost you? (Measured on 2026-10-17, Whale 5.39 on Chromium 150 was five majors behind and sent its own TLS fingerprint; the jump to 5.41 is in the [Whale 5.41 post](https://cdpfleet.com/docs/updates/whale-5-41).)

## As a developer: driving them

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| Version on the fleet | Whale 5.41 stable on **Chromium 156**. Stable channel only, no pinned versions. | Chrome 157 stable on Chromium 157, with `beta` (158) and `dev` (159) channels and pinned previous majors (`version`: 156 and 155). |
| Launch options | `channel`, `live_view`, `screen_size`, `keep_alive`, `start_url`, `record`. **No `cdp`** (400) and no persistent `profile` (`400 profile_unsupported_engine`). | The same plus `cdp`, `profile` and `version`. |
| Playwright features | Main-world evaluate, console events, init scripts, routing, screenshots, PDF, device emulation, tracing — all work (measured). | **The same list, all working** (measured). |
| Web platform | Chromium 156: every feature our probe checks reads the same as on Chrome except four that Chrome 157 added — no `Element.prototype.streamAppendHTML`, CSS `text-decoration-inset`, `WebTransport.reliability` or canvas `srgb-linear` colour space. The Chromium 151–156 features (iterator helpers, `FontFace` width, `<camera>`, CSS `margin-trim`, `symbols()`, `random()`) are all there (measured). | Chromium 157: all of the above present ([Chrome 157 post](https://cdpfleet.com/docs/updates/chrome-157); measured). |
| Privacy Sandbox | Topics API exposed; Protected Audience (`navigator.joinAdInterestGroup`) **still exposed**; no Shared Storage or `document.requestStorageAccessFor` (measured). | Topics API exposed; no Protected Audience (gone in 157), Shared Storage or `requestStorageAccessFor` (measured). |
| WebGL | WebGL 2.0 on SwiftShader (ANGLE, Vulkan), like Chrome (measured; before 2026-10-17 headful Whale had no WebGL context on the fleet). | WebGL 2.0 on SwiftShader (ANGLE, Vulkan), the software renderer of a GPU-less server. |

## As a scraper: what the site sees

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| User agent | `Chrome/156.0.0.0 Whale/5.41.429.3 Safari/537.36` — **Whale names itself**, with its full version. | `Chrome/157.0.0.0 … Safari/537.36`. |
| Client hints | Brands **`Whale 5`**, `Chromium 156`, `Not/A)Brand 24`; full versions `5.41.429.3` and `156.0.8078.70`. | Brands `Not-A.Brand 99`, `Google Chrome 157`, `Chromium 157`; full version `157.0.8103.38`. |
| TLS | JA4 `t13d1517h2_8daaf6152771_cb7bf5808d99`: 16 ciphers, 19 extensions, peetprint `fc97c1cd…`. | **Identical** JA4 and peetprint. Only JA3 differs, as it does between any two Chromium snapshots, because Chromium shuffles its TLS extension order. |
| HTTP/2 and headers | Chromium's SETTINGS and WINDOW\_UPDATE (`1:65536;2:0;4:6291456;6:262144|15663105`); header order `sec-ch-ua` … `user-agent`, `accept`, `sec-fetch-*`. | **Identical** HTTP/2 fingerprint and header order. |
| Fingerprint values | The machine's own cores, memory and screen; canvas hash `4f88e08a`, 5 plugins, `en-US, en`; the same WebGL renderer as Chrome. | Canvas hash `f5a94624` — **a different canvas hash** from Whale's on the same renderer; the same plugins and languages. Neither adds fingerprint randomisation. |
| Bot checks | bot.sannysoft.com: 1 flag, "WebGL Renderer" (SwiftShader on a GPU-less server). | The same 1 flag. |

## Which to pick

-   **Chrome** for the most common visitor on the web, the newest stable engine, CDP, persistent profiles, beta/dev channels and pinned majors.
-   **Whale** when a site — typically a Korean one built around Naver — should see a real Whale visitor: the brand is consistent in the user agent and the client hints. On TLS and HTTP/2 it can't be told from Chrome any more, so those headers (and a different canvas hash) are what set it apart. It doesn't pass as Chrome, and it isn't meant to.
-   **Mind the engine gap:** code written for Chromium 157 features (`streamAppendHTML()`, `text-decoration-inset`) won't run on Whale's Chromium 156, and code that still calls Protected Audience runs on Whale but not on Chrome 157. Feature-test, or use [Chrome](https://cdpfleet.com/docs/browsers/chrome) for the newest engine.

## Measured on the fleet (2026-11-08)

One headful launch of each through the same proxy, probed from inside a page and via tls.peet.ws, on 2026-11-08.

### Launch and cost

Single run; timings depend on the proxy and on fleet load.

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| Launch body | {"headless":false} | {"headless":false} |
| Threads used | 2 (linux\_headful) | 2 (linux\_headful) |
| Browser version | 156.0.8078.70 | 157.0.8103.38 |
| Launch request → browser ready | 0.7 s | 0.6 s |
| Playwright connect | 0.1 s | 0.1 s |
| Load example.com | 2.7 s | 1.3 s |
| Load tls.peet.ws/api/all | 2.0 s | 4.0 s |

### What the network sees

From tls.peet.ws/api/all, requested by the browser itself. JA3 hashes change between runs of the same build (GREASE), so compare JA4 and the HTTP/2 fingerprint.

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| HTTP version | h2 | h2 |
| JA4 | t13d1517h2\_8daaf6152771\_cb7bf5808d99 | t13d1517h2\_8daaf6152771\_cb7bf5808d99 |
| Peetprint hash | fc97c1cdfb1409c9a9326c1b726d1dee | fc97c1cdfb1409c9a9326c1b726d1dee |
| Akamai HTTP/2 fingerprint | 1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p | 1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p |
| Cipher suites / extensions | 16 / 19 | 16 / 19 |
| Header order (first 12) | method, authority, scheme, path, sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform, upgrade-insecure-requests, user-agent, accept, sec-fetch-site, sec-fetch-mode | method, authority, scheme, path, sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform, upgrade-insecure-requests, user-agent, accept, sec-fetch-site, sec-fetch-mode |

### What page scripts see

Read with page.evaluate on example.com. Cores and memory are the server's and vary between fleet nodes.

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| navigator.userAgent | Mozilla/5.0 (X11; Linux x86\_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Whale/5.41.429.3 Safari/537.36 | Mozilla/5.0 (X11; Linux x86\_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36 |
| UA-CH brands | Whale 5 · Chromium 156 · Not/A)Brand 24 | Not-A.Brand 99 · Google Chrome 157 · Chromium 157 |
| UA-CH full version list | Whale 5.41.429.3 · Chromium 156.0.8078.70 · Not/A)Brand 24.0.0.0 | Not-A.Brand 99.0.0.0 · Google Chrome 157.0.8103.38 · Chromium 157.0.8103.38 |
| navigator.platform / vendor | Linux x86\_64 / Google Inc. | Linux x86\_64 / Google Inc. |
| Languages | en-US, en | en-US, en |
| Timezone / locale | UTC / en-US | UTC / en-US |
| Screen (w×h×availW×availH×depth) | 1280x720x1280x720x24 | 1280x720x1280x720x24 |
| Window outer / inner / DPR | 1288x805 / 1280x720 / 1 | 1288x805 / 1280x720 / 1 |
| hardwareConcurrency / deviceMemory | 64 / 32 | 64 / 32 |
| WebGL vendor | Google Inc. (Google) | Google Inc. (Google) |
| WebGL renderer | ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver) | ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver) |
| WebGL version | WebGL 2.0 (OpenGL ES 3.0 Chromium) | WebGL 2.0 (OpenGL ES 3.0 Chromium) |
| WebGPU (navigator.gpu) | yes | yes |
| Canvas hash | 4f88e08a | f5a94624 |
| navigator.webdriver | no | no |
| window.chrome / navigator.connection | yes / yes | yes / yes |
| Plugins / PDF viewer | 5 / yes | 5 / yes |
| Notification.permission / permissions.query | default / prompt | default / prompt |

### Web platform features

Presence probes; a user agent that claims one version while exposing another's features is a detectable inconsistency.

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| `Iterator.prototype.includes` (new in Chrome 154) | yes | yes |
| `FontFace.width` (new in Chrome 154) | yes | yes |
| CSS `text-decoration-inset` (Chrome 157) | no | yes |
| `Iterator.prototype.join` (Chrome 153) | yes | yes |
| `Iterator.zip` (Chrome 153) | yes | yes |
| CSS `scroll-axis-lock` (Chrome 153) | no | no |
| `<camera>` element (Chrome 153) | yes | yes |
| `document.requestStorageAccessFor` (deprecated in 153) | no | no |
| Topics API (`document.browsingTopics`) | yes | yes |
| Protected Audience (`navigator.joinAdInterestGroup`) | yes | no |
| Shared Storage (`window.sharedStorage`) | no | no |
| Attribution Reporting (`window.attributionReporting`) | no | no |
| Private Aggregation | no | no |
| WebHID (`navigator.hid`) | yes | yes |
| CSS `margin-trim` (Chrome 155) | yes | yes |
| CSS `text-decoration-skip-spaces` (Chrome 155) | no | no |
| CSS `corner` shorthand (listed for Chrome 160) | no | no |
| CSS `symbols()` (Chrome 155) | yes | yes |
| `Element.streamAppendHTML` (Chrome 157) | no | yes |
| `WebTransport.reliability` (on stable from Chrome 157; listed for 158) | no | yes |
| `window.maximize()` — Additional Windowing Controls (Chrome 155) | no | no |
| Canvas `srgb-linear` colour space (on stable from Chrome 157) | no | yes |
| Permission policy `media-playback-while-not-visible` (Chrome 155) | yes | yes |
| CSS `random()` (Chrome 156) | yes | yes |
| CSS `scroll-snap-type: pair` (Chrome 156) | yes | yes |
| Fenced frames (`window.fence`) | yes | yes |
| `rel=compression-dictionary` (Chrome 156 updates) | yes | yes |

### bot.sannysoft.com

The classic headless-detection test page; what it marks red.

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| Checks / failed | 57 / 1 | 57 / 1 |
| Failed checks | WebGL Renderer | WebGL Renderer |

### A plain-HTTP URL (http://ip-api.com/json)

Chrome 154 warns before loading insecure HTTP by default — does that reach an automated session?

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| Final URL | http://ip-api.com/json/?fields=status | http://ip-api.com/json/?fields=status |
| HTTP status | 200 | 200 |
| Content loaded / warning page first | yes / no | yes / no |

### Playwright over the remote connection

Which client features work on this side.

|  | Naver Whale | Google Chrome |
| --- | --- | --- |
| page.evaluate runs in the page's own world | yes | yes |
| addInitScript visible to page scripts | yes | yes |
| Console events | yes | yes |
| Request interception (page.route) | yes | yes |
| Screenshot | yes | yes |
| PDF | yes | yes |
| Mobile device emulation | yes | yes |
| Tracing | yes | yes |

Rows where the two sides differ are highlighted. IP addresses are replaced with placeholders (203.0.113.x). The probe is `compare/probe.mjs` in our repository; the raw result is below.

Raw output

```
{
  "ran_at": "2026-11-08T02:23:10.013Z",
  "sides": [
    {
      "label": "Naver Whale",
      "engine": "whale",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "whale",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 658,
        "connect_ms": 139,
        "example_ms": 2745,
        "peet_ms": 1965
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1517h2_8daaf6152771_cb7bf5808d99",
        "ja3_hash": "93264e761b2b1a4a7fb77294f3ed1206",
        "peetprint_hash": "fc97c1cdfb1409c9a9326c1b726d1dee",
        "ciphers": 16,
        "extensions": 19,
        "akamai_h2": "1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p",
        "akamai_h2_hash": "52d84b11737d980aef856699f885ca86",
        "header_order": [
          "method",
          "authority",
          "scheme",
          "path",
          "sec-ch-ua",
          "sec-ch-ua-mobile",
          "sec-ch-ua-platform",
          "upgrade-insecure-requests",
          "user-agent",
          "accept",
          "sec-fetch-site",
          "sec-fetch-mode"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Whale/5.41.429.3 Safari/537.36",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 64,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Whale",
              "version": "5"
            },
            {
              "brand": "Chromium",
              "version": "156"
            },
            {
              "brand": "Not/A)Brand",
              "version": "24"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Whale",
              "version": "5.41.429.3"
            },
            {
              "brand": "Chromium",
              "version": "156.0.8078.70"
            },
            {
              "brand": "Not/A)Brand",
              "version": "24.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "5.41.429.3",
          "wow64": false
        },
        "screen": "1280x720x1280x720x24",
        "window": {
          "outer": "1288x805",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "UTC",
        "locale": "en-US",
        "webgl": {
          "vendor": "Google Inc. (Google)",
          "renderer": "ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
          "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)"
        },
        "canvas_hash": "4f88e08a",
        "webgpu": true,
        "chrome_object": true,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": true,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": true,
          "iterator_join": true,
          "iterator_zip": true,
          "fontface_width": true,
          "css_text_decoration_inset": false,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": true,
          "topics_api": true,
          "protected_audience": true,
          "shared_storage": false,
          "attribution_reporting": false,
          "request_storage_access_for": false,
          "webhid": true,
          "private_aggregation": false,
          "css_margin_trim": true,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": true,
          "stream_append_html": false,
          "webtransport_reliability": false,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": true,
          "css_random": true,
          "css_scroll_snap_pair": true,
          "fenced_frames": true,
          "compression_dictionary": true
        }
      },
      "page_main_world": null,
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "WebGL Renderer"
        ],
        "passed": 30
      },
      "plain_http": {
        "final_url": "http://ip-api.com/json/?fields=status",
        "status": 200,
        "title": "",
        "loaded": true,
        "warning_page": false,
        "page_text": "{\"status\":\"success\"}"
      },
      "playwright": {
        "evaluate_in_main_world": true,
        "console_events": true,
        "init_script": true,
        "route": true,
        "screenshot": true,
        "pdf": true,
        "mobile_emulation": true,
        "tracing": true
      },
      "browser_version": "156.0.8078.70"
    },
    {
      "label": "Google Chrome",
      "engine": "chrome",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "chrome",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 609,
        "connect_ms": 121,
        "example_ms": 1276,
        "peet_ms": 3994
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1517h2_8daaf6152771_cb7bf5808d99",
        "ja3_hash": "48fb16792e44aac3656f2c6417da91f4",
        "peetprint_hash": "fc97c1cdfb1409c9a9326c1b726d1dee",
        "ciphers": 16,
        "extensions": 19,
        "akamai_h2": "1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p",
        "akamai_h2_hash": "52d84b11737d980aef856699f885ca86",
        "header_order": [
          "method",
          "authority",
          "scheme",
          "path",
          "sec-ch-ua",
          "sec-ch-ua-mobile",
          "sec-ch-ua-platform",
          "upgrade-insecure-requests",
          "user-agent",
          "accept",
          "sec-fetch-site",
          "sec-fetch-mode"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 64,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Not-A.Brand",
              "version": "99"
            },
            {
              "brand": "Google Chrome",
              "version": "157"
            },
            {
              "brand": "Chromium",
              "version": "157"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Not-A.Brand",
              "version": "99.0.0.0"
            },
            {
              "brand": "Google Chrome",
              "version": "157.0.8103.38"
            },
            {
              "brand": "Chromium",
              "version": "157.0.8103.38"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "157.0.8103.38",
          "wow64": false
        },
        "screen": "1280x720x1280x720x24",
        "window": {
          "outer": "1288x805",
          "inner": "1280x720",
          "dpr": 1
        },
        "timezone": "UTC",
        "locale": "en-US",
        "webgl": {
          "vendor": "Google Inc. (Google)",
          "renderer": "ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)",
          "version": "WebGL 2.0 (OpenGL ES 3.0 Chromium)"
        },
        "canvas_hash": "f5a94624",
        "webgpu": true,
        "chrome_object": true,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": true,
        "stack_read_by_debugger": false,
        "features": {
          "iterator_includes": true,
          "iterator_join": true,
          "iterator_zip": true,
          "fontface_width": true,
          "css_text_decoration_inset": true,
          "css_scroll_axis_lock": false,
          "websocket_options_bag": null,
          "camera_element": true,
          "topics_api": true,
          "protected_audience": false,
          "shared_storage": false,
          "attribution_reporting": false,
          "request_storage_access_for": false,
          "webhid": true,
          "private_aggregation": false,
          "css_margin_trim": true,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": true,
          "stream_append_html": true,
          "webtransport_reliability": true,
          "window_maximize": false,
          "canvas_srgb_linear": true,
          "policy_media_playback_while_not_visible": true,
          "css_random": true,
          "css_scroll_snap_pair": true,
          "fenced_frames": true,
          "compression_dictionary": true
        }
      },
      "page_main_world": null,
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "WebGL Renderer"
        ],
        "passed": 30
      },
      "plain_http": {
        "final_url": "http://ip-api.com/json/?fields=status",
        "status": 200,
        "title": "",
        "loaded": true,
        "warning_page": false,
        "page_text": "{\"status\":\"success\"}"
      },
      "playwright": {
        "evaluate_in_main_world": true,
        "console_events": true,
        "init_script": true,
        "route": true,
        "screenshot": true,
        "pdf": true,
        "mobile_emulation": true,
        "tracing": true
      },
      "browser_version": "157.0.8103.38"
    }
  ]
}
```

## Bottom line

Whale is a Chromium browser that tells every site it's Whale in its user agent and client hints, while its TLS hello, HTTP/2 and headers are now the same as Chrome's, on an engine one Chromium major behind.

Both cost the same two threads headful; choose by which browser the site should believe it's talking to — and use Chrome when you need CDP or profiles.

---
Source: https://cdpfleet.com/docs/compare/whale-vs-chrome · Markdown: https://cdpfleet.com/docs/compare/whale-vs-chrome.md · All docs for AI tools: https://cdpfleet.com/llms.txt
