cdpfleet Docs GitHub Dashboard

Compare / browsers

Edge vs Brave

Two Chromium 155 forks with the same TLS and HTTP/2 fingerprint: Edge names itself in the user agent and reports its real machine; Brave hides in the user agent but not the client hints, farbles cores, memory and screen, and drops Topics and Fenced Frames.

Microsoft Edge Brave

Edge and Brave are the two Chromium forks people reach for when "not Chrome" matters — Edge because it's the second most common desktop browser, Brave for its privacy defaults. On the fleet both run Chromium 155.0.8059.40, measured the same night. Underneath, a server sees the same network fingerprint; the differences are in how each one names itself and how honest it is about the machine it runs on. For each against Google Chrome, see Chrome vs Edge and Chrome vs Brave.

As a developer: driving them

Microsoft EdgeBrave
Version on the fleetEdge 155.0.4283.45 on Chromium 155.0.8059.40; channel beta (156) and dev (157).Brave on Chromium 155.0.8059.40; channel beta. No dev channel.
Playwright client, optionschromium 1.60; channel, cdp, live_view, screen_size, keep_alive, profile, start_url.The same list.
Playwright featuresMain-world evaluate, console events, init scripts, routing, screenshots, PDF, device emulation, tracing — all work (measured).All the same, all working (measured).
Web platformChromium 155 including Google's Topics API, Fenced Frames and navigator.connection (measured).Chromium 155 without Topics, Fenced Frames and navigator.connection (measured) — Brave removes them.
Threads2 headful, 1 headless.Same.

As a scraper: what the site sees

Microsoft EdgeBrave
User agent… Chrome/155.0.0.0 Safari/537.36 Edg/155.0.0.0 — names itself.… Chrome/155.0.0.0 Safari/537.36 — the plain Chrome string.
Client hintsBrands Microsoft Edge 155, Chromium 155; full versions 155.0.4283.45 and 155.0.8059.40.Brands Brave 155, Chromium 155; full versions reduced to 155.0.0.0. Hiding in the user agent doesn't help against Sec-CH-UA.
HeadersChromium's order: … accept, sec-fetch-site, sec-fetch-mode …Adds sec-gpc: 1 (Global Privacy Control) before the fetch metadata.
TLSJA4 t13d1516h2_8daaf6152771_806a8c22fdea — 16 ciphers, 18 extensions.The same JA4 and the same peetprint (measured). The JA3 hash differs between any two runs (extension order is randomised), so don't compare JA3.
HTTP/2SETTINGS 1:65536;2:0;4:6291456;6:262144, WINDOW_UPDATE 15663105.Identical (measured).
Machine it reportsThe server's own: 36 cores, 32 GB, a 1280×720 screen, one canvas hash.Farbled: 51 cores, 8 GB, a 1366×768 screen and a different canvas hash — values that change between sessions and sites.
Languages, pluginsen-US, en; 5 plugins.en-US only; 7 plugins.
Bot checksbot.sannysoft.com: only "WebGL Renderer" flagged (SwiftShader on a GPU-less server).The same single flag (measured).

Which to pick

Measured on the fleet (2026-10-14)

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

Launch and cost

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

Microsoft EdgeBrave
Launch body{"headless":false}{"headless":false}
Threads used2 (linux_headful)2 (linux_headful)
Browser version155.0.4283.45155.0.8059.40
Launch request → browser ready0.8 s0.7 s
Playwright connect0.2 s0.1 s
Load example.com1.7 s2.1 s
Load tls.peet.ws/api/all2.1 s1.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.

Microsoft EdgeBrave
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-fetch-site, sec-fetch-modemethod, 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.

Microsoft EdgeBrave
navigator.userAgentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36 Edg/155.0.0.0Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36
UA-CH brandsMicrosoft Edge 155 · Chromium 155 · Not(A:Brand 24Brave 155 · Chromium 155 · Not(A:Brand 24
UA-CH full version listMicrosoft Edge 155.0.4283.45 · Chromium 155.0.8059.40 · Not(A:Brand 24.0.0.0Brave 155.0.0.0 · Chromium 155.0.0.0 · Not(A:Brand 24.0.0.0
navigator.platform / vendorLinux x86_64 / Google Inc.Linux x86_64 / Google Inc.
Languagesen-US, enen-US
Timezone / localeUTC / en-USUTC / en-US
Screen (w×h×availW×availH×depth)1280x720x1280x720x241366x768x1366x768x24
Window outer / inner / DPR1288x805 / 1280x720 / 11281x728 / 1280x720 / 1
hardwareConcurrency / deviceMemory36 / 3251 / 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 hashf5a94624ef65046d
navigator.webdrivernono
window.chrome / navigator.connectionyes / yesyes / no
Plugins / PDF viewer5 / 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.

Microsoft EdgeBrave
Iterator.prototype.includes (new in Chrome 154)yesyes
FontFace.width (new in Chrome 154)yesyes
CSS text-decoration-inset (new in Chrome 154)nono
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)yesno
Protected Audience (navigator.joinAdInterestGroup)yesyes
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)yesyes
CSS corner shorthand (Chrome 155)nono
CSS symbols() (Chrome 155)yesyes
Element.streamAppendHTML (Chrome 155)nono
WebTransport.reliability (Chrome 155)nono
window.maximize() — Additional Windowing Controls (Chrome 155)nono
Canvas srgb-linear colour space (Chrome 155)nono
Permission policy media-playback-while-not-visible (Chrome 155)yesyes
CSS random() (Chrome 156)nono
CSS scroll-snap-type: pair (Chrome 156)nono
Fenced frames (window.fence) — removal starts in 157yesno
rel=compression-dictionary (Chrome 156 updates)yesyes

bot.sannysoft.com

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

Microsoft EdgeBrave
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?

Microsoft EdgeBrave
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.

Microsoft EdgeBrave
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-10-14T01:03:27.779Z",
  "sides": [
    {
      "label": "Microsoft Edge",
      "engine": "edge",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "edge",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 775,
        "connect_ms": 168,
        "example_ms": 1745,
        "peet_ms": 2146
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
        "ja3_hash": "f709b91e2bb14e39812c5d41586fcb8f",
        "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-fetch-site",
          "sec-fetch-mode"
        ]
      },
      "page": {
        "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36 Edg/155.0.0.0",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 36,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Microsoft Edge",
              "version": "155"
            },
            {
              "brand": "Chromium",
              "version": "155"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Microsoft Edge",
              "version": "155.0.4283.45"
            },
            {
              "brand": "Chromium",
              "version": "155.0.8059.40"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "155.0.4283.45",
          "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": 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": true,
          "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": false,
          "css_scroll_snap_pair": false,
          "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": "155.0.4283.45"
    },
    {
      "label": "Brave",
      "engine": "brave",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "brave",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 729,
        "connect_ms": 147,
        "example_ms": 2101,
        "peet_ms": 961
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
        "ja3_hash": "a3b43ebad9f99b892408610b61c00a75",
        "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/155.0.0.0 Safari/537.36",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US"
        ],
        "hardware_concurrency": 51,
        "device_memory": 8,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 7,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Brave",
              "version": "155"
            },
            {
              "brand": "Chromium",
              "version": "155"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Brave",
              "version": "155.0.0.0"
            },
            {
              "brand": "Chromium",
              "version": "155.0.0.0"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "155.0.0.0",
          "wow64": false
        },
        "screen": "1366x768x1366x768x24",
        "window": {
          "outer": "1281x728",
          "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": "ef65046d",
        "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": true,
          "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": false,
          "css_scroll_snap_pair": false,
          "fenced_frames": false,
          "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": "155.0.8059.40"
    }
  ]
}

Bottom line

Edge and Brave are the same Chromium 155 on the wire. Edge tells the page the truth about itself and its machine; Brave tells the user agent a white lie, the client hints the truth, and makes up the machine.

Both cost the same thread on the fleet.