cdpfleet Docs Sign up free

Compare / versions

Opera developer vs stable

Opera's developer channel next to stable on the fleet. Both are on Chromium 155, so the web platform and the TLS and HTTP/2 fingerprint are identical. What gives the developer build away is the "(Edition developer)" suffix in its user agent.

Opera

On the fleet, Opera runs as stable and developer. Opera stopped shipping Linux betas, so developer is its only pre-release channel; beta is still accepted as a deprecated alias for it. Measured the same night: Opera 140.0.6072.0 developer on Chromium 155.0.8059.2, and Opera 139.0.6053.38 stable on Chromium 155.0.8059.85. That's a new Opera major on the same Chromium major. Unlike Chrome, Opera has no pinned versions, so this page compares the next release with the current one. How Opera differs from Chrome is in Opera vs Chrome; what changed in the last stable major is in the Opera 139 post.

What differs, measured on the fleet

What a site sees

Opera developer (140)Opera stable (139)
User agentChrome/155.0.0.0 … OPR/140.0.0.0 (Edition developer).Chrome/155.0.0.0 … OPR/139.0.0.0.
Client hintsOpera 140, Chromium 155, Not(A:Brand 24; full versions 140.0.6072.0 / 155.0.8059.2.Opera 139, Chromium 155, Not(A:Brand 24; full versions 139.0.6053.38 / 155.0.8059.85.
TLS and HTTP/2JA4 t13d1517h2_8daaf6152771_cb7bf5808d99, 16 ciphers / 19 extensions, plus the same peetprint, HTTP/2 SETTINGS and header order. JA3 differs between connections because of GREASE.Identical.
FingerprintCanvas hash f5a94624, SwiftShader WebGL, 5 plugins, PDF viewer, en-US, en, UTC, 1280×720 screen, webdriver false.Identical.
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.
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: "developer" for 140 (not "dev"; "beta" is a deprecated alias), nothing for stable (139). See the opera-developer recipe and the Opera page.
The "(Edition developer)" suffixOperaPart of the developer build's own user agent; stable doesn't send it.
Chromium base of each channelOperaBoth channels are on Chromium 155 today.
CDP accessYoucdp: true works on both channels (see the opera-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, and core counts are the node's.

Launch and cost

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

Opera developerOpera stable
Launch body{"headless":false,"channel":"developer"}{"headless":false}
Threads used2 (linux_headful)2 (linux_headful)
Browser version155.0.8059.2155.0.8059.85
Launch request → browser ready0.5 s0.6 s
Playwright connect0.0 s0.1 s
Load example.com0.7 s1.2 s
Load tls.peet.ws/api/all1.5 s1.2 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.

Opera developerOpera stable
HTTP versionh2h2
JA4t13d1517h2_8daaf6152771_cb7bf5808d99t13d1517h2_8daaf6152771_cb7bf5808d99
Peetprint hashfc97c1cdfb1409c9a9326c1b726d1deefc97c1cdfb1409c9a9326c1b726d1dee
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 / 1916 / 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-modemethod, 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.

Opera developerOpera stable
navigator.userAgentMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36 OPR/140.0.0.0 (Edition developer)Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36 OPR/139.0.0.0
UA-CH brandsOpera 140 · Chromium 155 · Not(A:Brand 24Opera 139 · Chromium 155 · Not(A:Brand 24
UA-CH full version listOpera 140.0.6072.0 · Chromium 155.0.8059.2 · Not(A:Brand 24.0.0.0Opera 139.0.6053.38 · Chromium 155.0.8059.85 · Not(A:Brand 24.0.0.0
navigator.platform / vendorLinux x86_64 / Google Inc.Linux x86_64 / Google Inc.
Languagesen-US, enen-US, en
Timezone / localeUTC / en-USUTC / en-US
Screen (w×h×availW×availH×depth)1280x720x1280x720x241280x720x1280x720x24
Window outer / inner / DPR1288x805 / 1280x720 / 11288x805 / 1280x720 / 1
hardwareConcurrency / deviceMemory8 / 3264 / 32
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 hashf5a94624f5a94624
navigator.webdrivernono
window.chrome / navigator.connectionyes / yesyes / yes
Plugins / PDF viewer5 / yes5 / 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.

Opera developerOpera stable
Iterator.prototype.includes (new in Chrome 154)yesyes
FontFace.width (new in Chrome 154)yesyes
CSS text-decoration-inset (Chrome 157)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)yesyes
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 (listed for Chrome 160)nono
CSS symbols() (Chrome 155)yesyes
Element.streamAppendHTML (Chrome 157)nono
WebTransport.reliability (on stable from Chrome 157; listed for 158)nono
window.maximize() — Additional Windowing Controls (Chrome 155)nono
Canvas srgb-linear colour space (on stable from Chrome 157)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)yesyes
rel=compression-dictionary (Chrome 156 updates)yesyes

bot.sannysoft.com

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

Opera developerOpera 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?

Opera developerOpera 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.

Opera developerOpera 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:06:47.731Z",
  "sides": [
    {
      "label": "Opera developer",
      "engine": "opera",
      "body": {
        "headless": false,
        "channel": "developer"
      },
      "launch": {
        "browser": "opera",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 545,
        "connect_ms": 37,
        "example_ms": 724,
        "peet_ms": 1472
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1517h2_8daaf6152771_cb7bf5808d99",
        "ja3_hash": "83375184e0a7d5b481bb56b9b04f90bc",
        "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/155.0.0.0 Safari/537.36 OPR/140.0.0.0 (Edition developer)",
        "platform": "Linux x86_64",
        "vendor": "Google Inc.",
        "languages": [
          "en-US",
          "en"
        ],
        "hardware_concurrency": 8,
        "device_memory": 32,
        "max_touch_points": 0,
        "webdriver": false,
        "plugins": 5,
        "pdf_viewer": true,
        "ua_data": {
          "brands": [
            {
              "brand": "Opera",
              "version": "140"
            },
            {
              "brand": "Chromium",
              "version": "155"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Opera",
              "version": "140.0.6072.0"
            },
            {
              "brand": "Chromium",
              "version": "155.0.8059.2"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "140.0.6072.0",
          "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.8059.2"
    },
    {
      "label": "Opera stable",
      "engine": "opera",
      "body": {
        "headless": false
      },
      "launch": {
        "browser": "opera",
        "resource_class": "linux_headful",
        "weight": 2,
        "launch_ms": 591,
        "connect_ms": 125,
        "example_ms": 1173,
        "peet_ms": 1234
      },
      "network": {
        "http_version": "h2",
        "ja4": "t13d1517h2_8daaf6152771_cb7bf5808d99",
        "ja3_hash": "22fb104ac7d5ee7397570b059e22c421",
        "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/155.0.0.0 Safari/537.36 OPR/139.0.0.0",
        "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": "Opera",
              "version": "139"
            },
            {
              "brand": "Chromium",
              "version": "155"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24"
            }
          ],
          "mobile": false,
          "platform": "Linux",
          "architecture": "x86",
          "bitness": "64",
          "formFactors": [
            "Desktop"
          ],
          "fullVersionList": [
            {
              "brand": "Opera",
              "version": "139.0.6053.38"
            },
            {
              "brand": "Chromium",
              "version": "155.0.8059.85"
            },
            {
              "brand": "Not(A:Brand",
              "version": "24.0.0.0"
            }
          ],
          "model": "",
          "platformVersion": "",
          "uaFullVersion": "139.0.6053.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": 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.8059.85"
    }
  ]
}

Bottom line

Opera 140 developer is the same browser as 139 stable as far as a page or the network can tell. It runs on the same Chromium 155 and has the same fingerprint, and only the version strings and the "(Edition developer)" suffix differ. Code that runs on stable needs no change.

The developer channel matters once Opera moves to Chromium 157: that is where a new Chromium base should show up first, together with its features and HTTPS-First mode.