cdpfleet Docs Sign up free

Compare / versions

Brave beta vs stable

Brave's beta channel next to stable on the fleet. Right now the beta is the older engine: Brave 1.100 beta is on Chromium 156, while 1.99 stable already moved to Chromium 157. TLS and HTTP/2 are identical, and five web APIs differ.

Brave

On the fleet, Brave runs as stable (1.99.55) and beta (1.100.44); there are no pinned versions. You'd expect the beta to be ahead, but today it is a major behind: stable 1.99.55 moved to Chromium 157.0.8103.39 (Brave 1.99 post), while beta 1.100.44 still runs Chromium 156.0.8078.74, measured the same night. Brave doesn't expose its own version number to pages, so the 1.99/1.100 numbers come from our catalog; everything else below was measured from inside a page and on the wire. How Brave differs from Chrome and Edge is covered in Chrome vs Brave and Edge vs Brave.

What differs, measured on the fleet

The rows highlighted in the table below. Every one of them follows from the Chromium base, not from Brave itself:

What a site sees

Brave beta (1.100.44)Brave stable (1.99.55)
User agentChrome/156.0.0.0 Safari/537.36: no Brave token.Chrome/157.0.0.0 Safari/537.36.
Client hintsBrands Not:A-Brand 8, Chromium 156, Brave 156; full versions reduced to 156.0.0.0.Brands Not-A.Brand 99, Brave 157, Chromium 157: a different placeholder brand, and Brave listed before Chromium. Full versions 157.0.0.0.
TLS and HTTP/2JA4 t13d1516h2_8daaf6152771_806a8c22fdea, 16 ciphers / 18 extensions, the same peetprint, HTTP/2 SETTINGS and header order (with sec-gpc). JA3 differs between connections because of GREASE.Identical.
FingerprintSwiftShader WebGL, 7 plugins, PDF viewer, en-US, UTC, webdriver false.The same.
Bot checksbot.sannysoft.com: 1 of 57 flagged ("WebGL Renderer").The same.
Plain HTTPhttp://ip-api.com/json loaded over HTTP (200), no warning page.The same. Chromium 157's HTTPS-First mode is switched off on every node for Brave.
PlaywrightMain-world evaluate, console events, init scripts, routing, screenshots, PDF, device emulation and tracing all work.The same.

For scraping and detection

Configurable — by you, by us, by nobody

ItemWho controls itHow
Which build runsYouchannel: "beta" for 1.100, nothing for stable (1.99). Brave has no version pins on the fleet; the Brave page lists the current channels.
Which Chromium each channel is onBraveSet by Brave's releases. The order can flip while a new release rolls out, as it has today.
Shields, sec-gpc, farblingNobody, per channelThe same on both channels.
Fingerprint surface (UA, client hints, screen)You, per contextnewContext options, as on stable.
CDP accessYoucdp: true works on both channels (see the brave-cdp recipe).

Measured on the fleet (2026-11-08)

One headful launch of each channel on the production fleet, through the same proxy, probed from inside a page and via tls.peet.ws. Timings are a single sample. Canvas, cores and memory are farbled by Brave and change on every session.

Launch and cost

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

Brave betaBrave stable
Launch body{"headless":false,"channel":"beta"}{"headless":false}
Threads used2 (linux_headful)2 (linux_headful)
Browser version156.0.8078.74157.0.8103.39
Launch request → browser ready0.5 s0.7 s
Playwright connect0.1 s0.0 s
Load example.com1.5 s1.6 s
Load tls.peet.ws/api/all2.2 s1.7 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.

Brave betaBrave stable
HTTP versionh2h2
JA4t13d1516h2_8daaf6152771_806a8c22fdeat13d1516h2_8daaf6152771_806a8c22fdea
Peetprint hash8f568b2a409b82d0ec24cb84bf3bc3fc8f568b2a409b82d0ec24cb84bf3bc3fc
Akamai HTTP/2 fingerprint1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p
Cipher suites / extensions16 / 1816 / 18
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-gpc, sec-fetch-sitemethod, authority, scheme, path, sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform, upgrade-insecure-requests, user-agent, accept, sec-gpc, sec-fetch-site

What page scripts see

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

Brave betaBrave stable
navigator.userAgentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/157.0.0.0 Safari/537.36
UA-CH brandsNot:A-Brand 8 · Chromium 156 · Brave 156Not-A.Brand 99 · Brave 157 · Chromium 157
UA-CH full version listNot:A-Brand 8.0.0.0 · Chromium 156.0.0.0 · Brave 156.0.0.0Not-A.Brand 99.0.0.0 · Brave 157.0.0.0 · Chromium 157.0.0.0
navigator.platform / vendorLinux x86_64 / Google Inc.Linux x86_64 / Google Inc.
Languagesen-USen-US
Timezone / localeUTC / en-USUTC / en-US
Screen (w×h×availW×availH×depth)1366x768x1366x768x241366x768x1366x768x24
Window outer / inner / DPR1281x722 / 1280x720 / 11281x723 / 1280x720 / 1
hardwareConcurrency / deviceMemory36 / 817 / 8
WebGL vendorGoogle Inc. (Google)Google Inc. (Google)
WebGL rendererANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)ANGLE (Google, Vulkan 1.3.0 (SwiftShader Device (Subzero) (0x0000C0DE)), SwiftShader driver)
WebGL versionWebGL 2.0 (OpenGL ES 3.0 Chromium)WebGL 2.0 (OpenGL ES 3.0 Chromium)
WebGPU (navigator.gpu)yesyes
Canvas hash5644a34b904ca97a
navigator.webdrivernono
window.chrome / navigator.connectionyes / noyes / no
Plugins / PDF viewer7 / yes7 / yes
Notification.permission / permissions.querydefault / promptdefault / prompt

Web platform features

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

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

bot.sannysoft.com

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

Brave betaBrave stable
Checks / failed57 / 157 / 1
Failed checksWebGL RendererWebGL 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?

Brave betaBrave stable
Final URLhttp://ip-api.com/json/?fields=statushttp://ip-api.com/json/?fields=status
HTTP status200200
Content loaded / warning page firstyes / noyes / no

Playwright over the remote connection

Which client features work on this side.

Brave betaBrave stable
page.evaluate runs in the page's own worldyesyes
addInitScript visible to page scriptsyesyes
Console eventsyesyes
Request interception (page.route)yesyes
Screenshotyesyes
PDFyesyes
Mobile device emulationyesyes
Tracingyesyes

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:05:53.339Z",
  "sides": [
    {
      "label": "Brave beta",
      "engine": "brave",
      "body": {
        "headless": false,
        "channel": "beta"
      },
      "launch": {
        "browser": "brave",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 534,
        "connect_ms": 142,
        "example_ms": 1456,
        "peet_ms": 2207
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
        "ja3_hash": "bbf9378f3d72016dc812ca0b3a73d882",
        "peetprint_hash": "8f568b2a409b82d0ec24cb84bf3bc3fc",
        "ciphers": 16,
        "extensions": 18,
        "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-gpc",
          "sec-fetch-site"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US"
        ],
        "hardware_concurrency": 36,
        "device_memory": 8,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 7,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Not:A-Brand",
              "version": "8"
            },
            {
              "brand": "Chromium",
              "version": "156"
            },
            {
              "brand": "Brave",
              "version": "156"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Not:A-Brand",
              "version": "8.0.0.0"
            },
            {
              "brand": "Chromium",
              "version": "156.0.0.0"
            },
            {
              "brand": "Brave",
              "version": "156.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "156.0.0.0",
          "wow64": false
        },
        "screen": "1366x768x1366x768x24",
        "window": {
          "outer": "1281x722",
          "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": "5644a34b",
        "webgpu": true,
        "chrome_object": true,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": false,
        "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": false,
          "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": false,
          "compression_dictionary": true
        }
      },
      "page_main_world": null,
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "WebGL Renderer"
        ],
        "passed": 29
      },
      "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.74"
    },
    {
      "label": "Brave stable",
      "engine": "brave",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "brave",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 691,
        "connect_ms": 19,
        "example_ms": 1600,
        "peet_ms": 1738
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
        "ja3_hash": "ac06e71a5304e5ff67d65517f739cda7",
        "peetprint_hash": "8f568b2a409b82d0ec24cb84bf3bc3fc",
        "ciphers": 16,
        "extensions": 18,
        "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-gpc",
          "sec-fetch-site"
        ]
      },
      "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"
        ],
        "hardware_concurrency": 17,
        "device_memory": 8,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 7,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Not-A.Brand",
              "version": "99"
            },
            {
              "brand": "Brave",
              "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": "Brave",
              "version": "157.0.0.0"
            },
            {
              "brand": "Chromium",
              "version": "157.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "157.0.0.0",
          "wow64": false
        },
        "screen": "1366x768x1366x768x24",
        "window": {
          "outer": "1281x723",
          "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": "904ca97a",
        "webgpu": true,
        "chrome_object": true,
        "chrome_runtime": false,
        "notification_permission": "default",
        "notification_query": "prompt",
        "has_focus": true,
        "connection_api": false,
        "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": false,
          "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": false,
          "compression_dictionary": true
        }
      },
      "page_main_world": null,
      "sannysoft": {
        "checks": 57,
        "failed": 1,
        "failed_names": [
          "WebGL Renderer"
        ],
        "passed": 29
      },
      "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.39"
    }
  ]
}

Bottom line

Brave's beta channel isn't a preview of the next engine right now: 1.100 beta is a Chromium major behind 1.99 stable. Its TLS and HTTP/2 fingerprint is the same as stable's, but it has an older Chromium's API surface. That puts it in a smaller group of visitors without giving you anything new to test.

For scraping, stay on stable. A script that works on one Brave channel needs no change on the other, unless it relies on one of the five APIs listed above.