Dotted pixel art of dark olive hills curving around a valley under a deep blue sky with thin pale cloud.

Browser engines compared

Author
gunlaug team
Updated
8 Nov 2026
Reading time
8 min

Photo by Eduardo Ribas

Chrome, Firefox and Safari each run a different engine. We ran the same feature checks and measurements in Chrome, Firefox and Playwright's WebKit build to see where they differ.

Check your own browser

These are ten of our CSS.supports() checks, run in the browser you are reading this in, next to what each test browser returned.

This browser looks like checking.

Feature support in this browser next to the three test browsers
CheckThis browserChrome 156Firefox 159WebKit 26.0 build
Selector: ::scroll-markercheckingYesNoNo
Selector: ::-webkit-scrollbarcheckingYesNoYes
Selector: :has()checkingYesYesYes
Forms: appearance: base-selectcheckingYesNoNo
Text: text-wrap: prettycheckingYesNoYes
Sizing: interpolate-sizecheckingYesNoNo
Sizing: -moz-availablecheckingNoYesNo
Colour: light-dark()checkingYesYesYes
Functions: if()checkingYesNoNo
Anchor positioning: anchor-namecheckingYesYesYes

Which browser uses which engine

Browsers on one engine can still be on different versions of it. Opera 139, from October 2026, runs Chromium 155, while the Chrome in our run was 156.

On the iPhone, App Store guideline 2.5.6 requires WebKit in apps that browse the web. Apple grants exceptions by entitlement in the EU from iOS 17.4 and in Japan from iOS 26.2. Everywhere else, Chrome and Firefox on an iPhone run WebKit, so Chrome on your laptop tells you nothing about Chrome on an iPhone. We read these pages on 8 November 2026.

Where feature support differs

We ran 113 checks: 59 through CSS.supports() and 54 through DOM and JavaScript feature detection. All three browsers gave the same answer on 63. Chrome and Firefox disagreed on 25, listed here. On 24 of those, Chrome said yes and Firefox said no.

CSS checks where Chrome and Firefox gave different answers
CSS.supports() checkChrome 156Firefox 159WebKit 26.0 build
Selector: ::scroll-button()YesNoNo
Selector: ::scroll-markerYesNoNo
Selector: ::-webkit-scrollbarYesNoYes
Forms: appearance: base-selectYesNoNo
Text: text-wrap: prettyYesNoYes
Text: initial-letterYesNoNo
Sizing: interpolate-sizeYesNoNo
Sizing: calc-size()YesNoNo
Sizing: stretch keywordYesNoNo
Sizing: -moz-availableNoYesNo
Shapes: corner-shapeYesNoNo
Functions: if()YesNoNo
Functions: random()YesNoYes
Layout: reading-flowYesNoNo
DOM and JavaScript checks where Chrome and Firefox gave different answers
Feature detectionChrome 156Firefox 159WebKit 26.0 build
At-rule: @view-transitionYesNoYes
At-rule: @functionYesNoNo
HTML: speculation rulesYesNoNo
File System Access pickersYesNoNo
WebUSBYesNoNo
WebHIDYesNoNo
Web BluetoothYesNoNo
EyeDropperYesNoNo
navigator.userAgentDataYesNoNo
navigator.connectionYesNoNo
Long animation frame entriesYesNoNo

hanging-punctuation was the only CSS check that the WebKit build alone passed. A passing check shows the browser parses the value and says nothing about how well the feature works.

The WebKit column is not Safari

Playwright’s WebKit comes from WebKit’s main branch, and the same page says Playwright “doesn’t work with the branded version of Safari”. Ours ran on Windows and reported version 26.0. Its user agent claims a Mac while navigator.platform says Win32. Apple’s own notes list features this build reported as missing:

Features the WebKit build reported as absent that Apple's WebKit notes list for Safari
FeatureIn this buildListed by Apple for
Navigation APINoSafari 26.2
Largest Contentful PaintNoSafari 26.2
Event Timing (for INP)NoSafari 26.2
scrollbar-colorNoSafari 26.2
WebGPUNoSafari 26 beta
CookieStoreNoSafari 18.4
Web PushNoSafari 16, macOS Ventura
overscroll-behaviorNoSafari 16 beta

Age can’t explain the Safari 16 rows, since this build reports 26.0. Playwright says features that depend on the platform vary by operating system, and points to WebKit on a Mac for the closest match to Safari. Read the WebKit column as what one Windows build reports. A Safari answer needs a real Mac or iPhone. If you only have Windows, start with Safari on Windows.

Dotted pixel art of a golden sunset with a dark cloud above a bright horizon.Photo by Jonathan Borba

Default form control sizes

With no CSS applied, a text input was 177 pixels wide in Chrome, 164.67 in Firefox and 152 in the WebKit build, all on Windows 11.

Default width and height of form controls in pixels
Control, width × heightChrome 156Firefox 159WebKit 26.0 build
text input177 × 21164.67 × 22152 × 22
date input116.33 × 21.33119.67 × 21152 × 22
range input129 × 16160 × 20129 × 20
select62 × 1969 × 2265 × 28
textarea168 × 36151 × 38146 × 38
button54.55 × 2150.82 × 2251.41 × 25
checkbox13 × 1314 × 1412 × 12

Chrome’s text input used Arial at 13.33 pixels, Firefox’s used MS Shell Dlg 2 at the same size, and the WebKit build used MS Shell Dlg at 13. Pinning the box removed every difference: with the rule below, all 16 control types we tried measured 200 by 40 in all three.

input, select, textarea, button {
  font: 16px/1.25 Arial;
  box-sizing: border-box;
  width: 200px;
  height: 40px;
  padding: 8px;
  border: 1px solid #000;
  margin: 0;
}

Text widths barely differ

We measured one 60-character sentence at 16 pixels. For the named fonts, Firefox stayed within 0.15 pixels of Chrome, and the WebKit build matched Chrome exactly. The generic families are where they split.

Width of the same sentence in pixels
FontChrome 156Firefox 159WebKit 26.0 build
Arial432.22432.32432.22
Georgia422.41422.47422.41
Verdana492.52492.67492.52
Courier New576.09576576.09
monospace428.86429468.08
system-ui425.38425.3385.67

In the WebKit build, system-ui came out at the same width as Times New Roman, and monospace was 39.22 pixels wider than in Chrome. Neither result says anything about Safari on a Mac.

Scrollbars and layout limits

These scrollbar widths come from visible windows, because headless browsers can hide scrollbars. Windows was left at its default scrollbar setting.

Width taken by a vertical scrollbar in pixels
CSSChromeFirefoxFirefox, overlay offWebKit build
overflow: scroll150170
scrollbar-width: thin10080
::-webkit-scrollbar { width: 8px }80178

Firefox reported 0 by default and 17 with widget.windows.overlay-scrollbars.enabled off, so the same page can have 15, 17 or 0 pixels less room. Firefox ignored ::-webkit-scrollbar. All three passed the scrollbar-gutter check if you want to reserve the space.

Layout rounding and the height of very tall blocks in pixels
CSSChrome 156Firefox 159WebKit 26.0 build
width: 33.333px33.32812533.33332833.328125
height: 17,000,000px17,000,00017,000,00017,000,000
height: 18,000,000px18,000,000018,000,000
height: 1,000,000,000px33,554,428033,554,428

Blink and WebKit store layout in sixty-fourths of a pixel, and Gecko in sixtieths. A block 18 million pixels tall reported a height of 0 in Firefox, while Chrome and the WebKit build capped at 33,554,428. Virtual lists that size one very tall spacer element can hit this.

Date parsing

Times are in Oslo time, the test machine’s zone.

How new Date() read each string, in Oslo time
InputChrome 156Firefox 159WebKit 26.0 build
2026-11-08T10:008 Nov 2026, 10:008 Nov 2026, 10:008 Nov 2026, 10:00
2026-11-08 10:008 Nov 2026, 10:008 Nov 2026, 10:008 Nov 2026, 10:00
11-08-20268 Nov 2026, 00:008 Nov 2026, 00:00Invalid Date
08.11.202611 Aug 2026, 00:0011 Aug 2026, 00:00Invalid Date

Chrome and Firefox read 08.11.2026 as 11 August, the US month order, and the WebKit build refused it. Pass ISO 8601 with the T and they agree. Don’t match on error text either: reading a property of null gave Cannot read properties of null (reading 'x') in Chrome and null is not an object (evaluating 'null.x') in the WebKit build.

What to do about it

  1. Use @supports or CSS.supports() for each feature. Don’t read the user agent: this WebKit build claims to be a Mac.
  2. Set font, box sizing, width and height on form controls yourself.
  3. Test in Chrome and Firefox as a minimum, then Safari on a real device.
  4. When two engines disagree, cut the page down with a reduced test case before you blame either one.

How this was tested

A script served one page from 127.0.0.1 and ran the checks in each browser on 8 November 2026, on Windows 11, at 1000 by 800 pixels.

  • Chrome 156.0.8078.80, headless with scrollbars left on, then with a window.
  • Firefox 159.0.1, headless, then with a window, on default preferences apart from the one scrollbar preference above.
  • WebKit 26.0 from Playwright 1.56.1, on Windows. This build is not Safari, and nothing here ran on a Mac or an iPhone.

The full output is available as raw JSON, including all 113 checks and every value above. The test script and this article were prepared with help from AI.

How this used to work

Chromium used WebKit until it announced Blink in April 2013. The Blink FAQ gives Chromium’s multi-process architecture as the reason, and the extra work of supporting it in a shared codebase. So advice written before 2013 that says Chrome and Safari behave the same is out of date.

Common questions

Is Playwright’s WebKit the same as Safari?

No. It is a build of the WebKit engine with Playwright’s patches, and on Windows it reported several features as absent that Apple lists for Safari.

Does Chrome on an iPhone use Blink?

Apple’s guideline 2.5.6 requires WebKit outside the EU and Japan, so there it doesn’t.

Do I still need to test in more than one engine?

Yes. Chrome and Firefox disagreed on 25 of our 113 checks and on most default form control sizes. See what to test.

Sources