Compare / versions
Edge 156 (beta) vs Edge 155
Edge's beta channel next to stable on the fleet: two CSS features a page can detect, a reordered client-hint brand list, and the same TLS and HTTP/2 fingerprint.
On the fleet, Edge runs as stable (measured 155.0.4283.60, on Chromium 155.0.8059.80), beta (156.0.4314.23, Chromium 156.0.8078.12) and dev (157). Unlike Chrome, Edge has no pinned previous majors, so the useful comparison is the other way round: what the next release changes, measured before it reaches stable. Below: what differs from inside a page and on the wire, what that means for detection, and what you can configure. The Chromium side of these releases is covered in Chrome 155 vs 154 and Chrome 156 (beta) vs 154; how Edge differs from Chrome is in Chrome vs Edge.
New in 156, measured on the fleet
Present in the 156 beta and absent in 155 in our probe (rows highlighted in the table below). Both come from Chromium 156, as on Chrome's beta:
- CSS
random()— random numeric values in CSS (width: random(10px, 100px)). - CSS
scroll-snap-type: pair.
Already in 155, unchanged in 156
- The Chromium 155 features —
margin-trim,symbols(),text-decoration-skip-spacesand themedia-playback-while-not-visiblepermissions policy — are present in both builds, so they no longer separate stable from beta. <fencedframe>andwindow.fenceare still present in both, as are the Topics API and Protected Audience; Shared Storage, Attribution Reporting, Private Aggregation andrequestStorageAccessForare absent in both.- Not exposed in either build:
text-decoration-inset, thecornershorthands,streamAppendHTML(), WebTransport reliability, windowing controls (window.maximize()) andsrgb-linearcanvases. Playwright launches Edge with--disable-field-trial-config, so features rolled out gradually stay off in automated sessions.
What a site sees
| Edge 156 beta | Edge 155 | |
|---|---|---|
| User agent | Chrome/156.0.0.0 … Edg/156.0.0.0 (reduced). | Chrome/155.0.0.0 … Edg/155.0.0.0. |
| Client hints | Brands Not:A-Brand 8, Chromium 156, Microsoft Edge 156 — the GREASE brand now comes first; full versions 156.0.4314.23 (Edge) and 156.0.8078.12 (Chromium). | Microsoft Edge 155, Chromium 155, Not(A:Brand 24 — GREASE brand last; full versions 155.0.4283.60 and 155.0.8059.80. |
| TLS and HTTP/2 | JA4 t13d1516h2_8daaf6152771_806a8c22fdea, peetprint, HTTP/2 SETTINGS and header order identical to 155 (JA3 differs per connection because of GREASE). | The same. |
| Fingerprint and bot checks | Same canvas hash, WebGL (SwiftShader), 5 plugins, languages and screen; bot.sannysoft.com flags only "WebGL Renderer". | The same. |
| Playwright | Every probed feature works: main-world evaluate, console events, init scripts, routing, screenshots, PDF, device emulation, tracing. | The same. |
For scraping and detection
- The version is declared in four places and they must agree: the reduced user agent (both the
Chrome/and theEdg/token),sec-ch-ua,navigator.userAgentData.brandsand the high-entropyfullVersionList. 156 also moves and changes the GREASE brand, so a brand list copied from 155 next to a 156 user agent is inconsistent. - Two cheap probes separate 156 from 155:
CSS.supports("width", "random(10px, 100px)")andCSS.supports("scroll-snap-type", "pair"). An "Edge 156" user agent on a 155 engine fails both. - A beta user agent is a small cohort. Most visitors run stable; use
channel: "beta"to see what breaks before it ships, not to blend in. - Nothing changes on the wire. TLS and HTTP/2 fingerprints are the same, and match Brave's (see Edge vs Brave), so network-level scoring treats both Edge versions alike.
- The core count differed between the two launches (24 vs 16) only because they landed on different nodes; it is not a version difference.
Configurable — by you, by us, by nobody
| Item | Who controls it | How |
|---|---|---|
| Which release runs | You | channel: "beta" for 156 today, "dev" for 157, nothing for stable (155). Edge has no version pins on the fleet; the Edge page lists the current channels. |
| Features in the release notes but not exposed | cdpfleet (launch flags) | Chromium --enable-features switches are set by the fleet, not by launch options. Tell us if you need one for testing. |
<fencedframe> / window.fence | Nobody | Still present in both builds; Chromium plans to remove it from 157 on. |
| Fingerprint surface (UA, client hints, canvas, WebGL, screen) | You, per context | Unchanged between the versions; newContext options as before. |
| CDP access | You | cdp: true works on every Edge channel (see the edge-cdp recipe). |
Measured on the fleet (2026-10-16)
One headful launch of each on the production fleet through the same proxy, probed from inside a page and via tls.peet.ws. Timings are a single sample; core counts are the node's.
Launch and cost
Single run; timings depend on the proxy and on fleet load.
| Edge 156 beta | Edge 155 | |
|---|---|---|
| Launch body | {"headless":false,"channel":"beta"} | {"headless":false} |
| Threads used | 2 (linux_headful) | 2 (linux_headful) |
| Browser version | 156.0.4314.23 | 155.0.4283.60 |
| Launch request → browser ready | 0.5 s | 0.4 s |
| Playwright connect | 0.1 s | 0.1 s |
| Load example.com | 1.0 s | 2.0 s |
| Load tls.peet.ws/api/all | 1.5 s | 2.3 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.
| Edge 156 beta | Edge 155 | |
|---|---|---|
| HTTP version | h2 | h2 |
| JA4 | t13d1516h2_8daaf6152771_806a8c22fdea | t13d1516h2_8daaf6152771_806a8c22fdea |
| Peetprint hash | 8f568b2a409b82d0ec24cb84bf3bc3fc | 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 / 18 | 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.
| Edge 156 beta | Edge 155 | |
|---|---|---|
| navigator.userAgent | Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/156.0.0.0 Safari/537.36 Edg/156.0.0.0 | 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 |
| UA-CH brands | Not:A-Brand 8 · Chromium 156 · Microsoft Edge 156 | Microsoft Edge 155 · Chromium 155 · Not(A:Brand 24 |
| UA-CH full version list | Not:A-Brand 8.0.0.0 · Chromium 156.0.8078.12 · Microsoft Edge 156.0.4314.23 | Microsoft Edge 155.0.4283.60 · Chromium 155.0.8059.80 · Not(A:Brand 24.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 | 16 / 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.
| Edge 156 beta | Edge 155 | |
|---|---|---|
Iterator.prototype.includes (new in Chrome 154) | yes | yes |
FontFace.width (new in Chrome 154) | yes | yes |
CSS text-decoration-inset (new in Chrome 154) | 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) | yes | yes |
CSS text-decoration-skip-spaces (Chrome 155) | yes | yes |
CSS corner shorthand (Chrome 155) | no | no |
CSS symbols() (Chrome 155) | yes | yes |
Element.streamAppendHTML (Chrome 155) | no | no |
WebTransport.reliability (Chrome 155) | no | no |
window.maximize() — Additional Windowing Controls (Chrome 155) | no | no |
Canvas srgb-linear colour space (Chrome 155) | no | no |
Permission policy media-playback-while-not-visible (Chrome 155) | yes | yes |
CSS random() (Chrome 156) | yes | no |
CSS scroll-snap-type: pair (Chrome 156) | yes | no |
Fenced frames (window.fence) — removal starts in 157 | yes | yes |
rel=compression-dictionary (Chrome 156 updates) | yes | yes |
bot.sannysoft.com
The classic headless-detection test page; what it marks red.
| Edge 156 beta | Edge 155 | |
|---|---|---|
| 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?
| Edge 156 beta | Edge 155 | |
|---|---|---|
| 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.
| Edge 156 beta | Edge 155 | |
|---|---|---|
| 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 |
| 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-16T01:02:37.029Z",
"sides": [
{
"label": "Edge 156 beta",
"engine": "edge",
"body": {
"headless": false,
"channel": "beta"
},
"launch": {
"browser": "edge",
"resource_class": "linux_headful",
"weight": 2,
"launch_ms": 510,
"connect_ms": 120,
"example_ms": 999,
"peet_ms": 1505
},
"network": {
"http_version": "h2",
"ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
"ja3_hash": "d8db12fadaa9f4970aa3014a9e1b032e",
"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/156.0.0.0 Safari/537.36 Edg/156.0.0.0",
"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": "Not:A-Brand",
"version": "8"
},
{
"brand": "Chromium",
"version": "156"
},
{
"brand": "Microsoft Edge",
"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.8078.12"
},
{
"brand": "Microsoft Edge",
"version": "156.0.4314.23"
}
],
"model": "",
"platformVersion": "",
"uaFullVersion": "156.0.4314.23",
"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": 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.4314.23"
},
{
"label": "Edge 155",
"engine": "edge",
"body": {
"headless": false
},
"launch": {
"browser": "edge",
"resource_class": "linux_headful",
"weight": 2,
"launch_ms": 390,
"connect_ms": 93,
"example_ms": 1954,
"peet_ms": 2263
},
"network": {
"http_version": "h2",
"ja4": "t13d1516h2_8daaf6152771_806a8c22fdea",
"ja3_hash": "71c85c2e374d705167fab39e60b2e03e",
"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": 16,
"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.60"
},
{
"brand": "Chromium",
"version": "155.0.8059.80"
},
{
"brand": "Not(A:Brand",
"version": "24.0.0.0"
}
],
"model": "",
"platformVersion": "",
"uaFullVersion": "155.0.4283.60",
"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.60"
}
]
}Bottom line
Edge 156 is a quiet release for scrapers: two new CSS features a page can test, a reordered client-hint brand list, and nothing new on the wire. Code that runs on Edge 155 needs no change.
To check your own script before 156 reaches stable, launch channel: "beta" next to stable and diff the output — which is what this page did.