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

# Chrome vs Edge

Two real Chromium browsers on the fleet, measured side by side: identical engine, identical HTTP/2 and header order, and exactly three things a site can tell apart — the user-agent token, the client-hint brand and one TLS extension.

[Google Chrome](https://cdpfleet.com/docs/browsers/chrome) [Microsoft Edge](https://cdpfleet.com/docs/browsers/edge)

[Chrome](https://cdpfleet.com/docs/browsers/chrome) and [Edge](https://cdpfleet.com/docs/browsers/edge) on the fleet are the official Google and Microsoft builds for Linux, both on Chromium 154 at the time of measurement, both driven with the Playwright `chromium` client. Edge is Chromium with Microsoft's services and UI on top; for automation almost none of that UI exists. The interesting question is what is left that a server can see — and the answer is short enough to list.

## As a developer: driving them

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| Build and versions | Official Google build. `channel`: stable (154), beta (156), dev (157); `version` pins previous majors (153, 152 today). | Official Microsoft build. `channel`: stable (154), beta (155), dev (156). No pinned previous majors. |
| Playwright client, options | `chromium` 1.60. The common options plus `channel` and `version`. | `chromium` 1.60. The common options plus `channel`. |
| Rendering, codecs, PDF, device emulation | Chromium 154 with proprietary codecs (H.264, AAC) and Widevine, unlike Playwright's open-source Chromium. PDF in headless; mobile emulation works. | The same Chromium 154 and the same proprietary codecs; PDF and emulation the same (measured: every Playwright feature probe identical). |
| What Edge adds for a user | — | Collections, vertical tabs, the sidebar, Copilot, Microsoft account sync — browser UI that is not part of a page and not reachable through Playwright. For a script, Edge is Chrome with a different name. |
| Threads, speed | 2 headful, 1 headless. Timings in the table are proxy noise. | Same. |

## As a scraper: what the site sees

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| User agent | `… Chrome/154.0.0.0 Safari/537.36` | `… Chrome/154.0.0.0 Safari/537.36 Edg/154.0.0.0` — the only difference in the string. |
| Client hints (`sec-ch-ua`, `navigator.userAgentData`) | Brands `Chromium 154`, `Google Chrome 154`, plus the GREASE token. | Brands `Chromium 154`, `Microsoft Edge 154`, plus the GREASE token; `fullVersionList` carries Edge's own build (154.0.4258.62) next to Chromium's. |
| TLS | JA4 `t13d1517h2_8daaf6152771_…` — 19 extensions. | JA4 `t13d1516h2_8daaf6152771_…` — 18 extensions: Edge's ClientHello omits one extension Chrome sends. Same cipher suites (the middle hash matches), different full JA4 and peetprint. |
| HTTP/2 and headers | Akamai fingerprint `1:65536;2:0;4:6291456;6:262144|15663105|0|m,a,s,p`; header order `:method :authority :scheme :path sec-ch-ua …`. | **Identical** — same SETTINGS, same WINDOW\_UPDATE, same pseudo-header and header order (measured). |
| JavaScript surface | Chromium 154: same plugins (5), same WebGL (SwiftShader on the fleet), same canvas hash, same feature set, `webdriver` false. | **Identical** on every probe except the UA-derived values (measured). |
| Who runs it | About two thirds of desktop users; on Linux, the dominant browser. | A few percent of desktop users, mostly on Windows; Edge on Linux (`X11; Linux x86_64 … Edg/`) is a small cohort — a consistent one, since it is a real build, but small. |
| bot.sannysoft.com | 1 of 57 red: "WebGL Renderer" (the SwiftShader string). | The same single red. |

## Which to pick

-   **Chrome** by default: the largest cohort, the most versions and channels (including pinned majors for reproducing a site's behaviour on an older release), and the browser most sites are tested against.
-   **Edge** when the target treats Edge differently — Microsoft properties and sites that gate features on the `Edg/` token or the `Microsoft Edge` brand — or when you want a second genuine Chromium identity (different UA, brand and JA4) without leaving real browsers. Keep the platform plausible: an Edge user agent on Linux is rare; use it where it fits.
-   **Not for diversity at scale:** alternating Chrome and Edge changes three fields and nothing else — same HTTP/2, same canvas, same GPU string. For identities that differ at the device level, see [Camoufox](https://cdpfleet.com/docs/browsers/camoufox).

## Measured on the fleet (2026-10-06)

One headful launch of each through the same proxy; both official Linux builds on Chromium 154. The TLS difference is stable per build; the timing difference is one slow proxy exit during Chrome's run.

### Launch and cost

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

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| Launch body | {"headless":false} | {"headless":false} |
| Threads used | 2 (linux\_headful) | 2 (linux\_headful) |
| Browser version | 154.0.8037.97 | 154.0.4258.62 |
| Launch request → browser ready | 0.7 s | 0.6 s |
| Playwright connect | 0.3 s | 0.1 s |
| Load example.com | 5.5 s | 0.4 s |
| Load tls.peet.ws/api/all | 1.4 s | 1.6 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.

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| HTTP version | h2 | h2 |
| JA4 | t13d1517h2\_8daaf6152771\_cb7bf5808d99 | t13d1516h2\_8daaf6152771\_806a8c22fdea |
| Peetprint hash | fc97c1cdfb1409c9a9326c1b726d1dee | 8f568b2a409b82d0ec24cb84bf3bc3fc |
| 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 / 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-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.

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| navigator.userAgent | Mozilla/5.0 (X11; Linux x86\_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36 | Mozilla/5.0 (X11; Linux x86\_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36 Edg/154.0.0.0 |
| UA-CH brands | Chromium 154 · Google Chrome 154 · Not A(Brand 99 | Chromium 154 · Microsoft Edge 154 · Not A(Brand 99 |
| UA-CH full version list | Chromium 154.0.8037.97 · Google Chrome 154.0.8037.97 · Not A(Brand 99.0.0.0 | Chromium 154.0.8037.98 · Microsoft Edge 154.0.4258.62 · Not A(Brand 99.0.0.0 |
| 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 | 24 / 32 | 12 / 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 | f5a94624 | 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.

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| `Iterator.prototype.includes` (new in Chrome 154) | yes | yes |
| `FontFace.width` (new in Chrome 154) | yes | yes |
| CSS `text-decoration-inset` (Chrome 157) | no | no |
| `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 | yes |
| 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) | no | no |
| CSS `text-decoration-skip-spaces` (Chrome 155) | no | no |
| CSS `corner` shorthand (listed for Chrome 160) | no | no |
| CSS `symbols()` (Chrome 155) | no | no |
| `Element.streamAppendHTML` (Chrome 157) | no | no |
| `WebTransport.reliability` (on stable from Chrome 157; listed for 158) | no | no |
| `window.maximize()` — Additional Windowing Controls (Chrome 155) | no | no |
| Canvas `srgb-linear` colour space (on stable from Chrome 157) | no | no |
| Permission policy `media-playback-while-not-visible` (Chrome 155) | no | no |
| CSS `random()` (Chrome 156) | no | no |
| CSS `scroll-snap-type: pair` (Chrome 156) | no | no |
| 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.

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| 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?

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| 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.

|  | Google Chrome | Microsoft Edge |
| --- | --- | --- |
| 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-10-06T20:09:31.775Z",
  "sides": [
    {
      "label": "Google Chrome",
      "engine": "chrome",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "chrome",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 728,
        "connect_ms": 270,
        "example_ms": 5463,
        "peet_ms": 1363
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1517h2_8daaf6152771_cb7bf5808d99",
        "ja3_hash": "534a3aac02ce995cde620f05ac154405",
        "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/154.0.0.0 Safari/537.36",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 24,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Chromium",
              "version": "154"
            },
            {
              "brand": "Google Chrome",
              "version": "154"
            },
            {
              "brand": "Not A(Brand",
              "version": "99"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Chromium",
              "version": "154.0.8037.97"
            },
            {
              "brand": "Google Chrome",
              "version": "154.0.8037.97"
            },
            {
              "brand": "Not A(Brand",
              "version": "99.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "154.0.8037.97",
          "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": false,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": false,
          "stream_append_html": false,
          "webtransport_reliability": false,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": false,
          "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": "154.0.8037.97"
    },
    {
      "label": "Microsoft Edge",
      "engine": "edge",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "edge",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 613,
        "connect_ms": 63,
        "example_ms": 411,
        "peet_ms": 1644
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
        "ja3_hash": "7b846403a2362a1618a29e1eea96ba9b",
        "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/154.0.0.0 Safari/537.36 Edg/154.0.0.0",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 12,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Chromium",
              "version": "154"
            },
            {
              "brand": "Microsoft Edge",
              "version": "154"
            },
            {
              "brand": "Not A(Brand",
              "version": "99"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Chromium",
              "version": "154.0.8037.98"
            },
            {
              "brand": "Microsoft Edge",
              "version": "154.0.4258.62"
            },
            {
              "brand": "Not A(Brand",
              "version": "99.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "154.0.4258.62",
          "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": false,
          "css_text_decoration_skip_spaces": false,
          "css_corner_shorthand": false,
          "css_symbols": false,
          "stream_append_html": false,
          "webtransport_reliability": false,
          "window_maximize": false,
          "canvas_srgb_linear": false,
          "policy_media_playback_while_not_visible": false,
          "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": "154.0.4258.62"
    }
  ]
}
```

## Bottom line

For a page, Chrome and Edge are the same machine wearing two badges: `Edg/` in the user agent, `Microsoft Edge` in the client hints, and one TLS extension. Everything an anti-bot system reads beyond that — HTTP/2, header order, canvas, WebGL, feature set — is byte-for-byte Chromium 154.

That makes Edge a safe, cheap second identity when a site cares which badge it sees, and a pointless one when it doesn't.

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