Download 147.0.7727.117 from the Chrome Stable for Windows 32-bit
Download Google Chrome 147.0.7727.117 with the branch, platform, release date, and file size shown clearly on the same page.
What users usually want to know first
What changed in Chrome 147.0.7727.117
Google Chrome 147.0.7727.117 is available here as part of the Windows 32-bit Stable archive. Use this release page when you want the exact version, the current package details, and quick access to the correct installer.
Stable release date: April 7th, 2026
Unless otherwise noted, the following changes apply to Chrome 147 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.
CSS and UI
Element-scoped view transitions
Exposes element.startViewTransition() on arbitrary HTML elements. The element establishes a scope for the transition, which means that the transition pseudo-elements are affected by ancestor clips and transforms, and multiple transitions on separate elements can run concurrently.
Related technical references: ChromeStatus.com entry · Spec
CSS contrast-color()
This function helps you meet contrast requirements for accessibility.
You can use the contrast-color() function anywhere in CSS where a color value is expected. It takes a color value argument and returns either 'black' or 'white', depending on which provides the highest contrast against the color argument.
Related technical references: ChromeStatus.com entry · Spec
Timeline named range scroll
This feature expands the set of named ranges for view timelines by adding a scroll range to the existing set of entry, exit, cover, and contain.
Related technical references: ChromeStatus.com entry · Spec
CSS border-shape property
The CSS border-shape property lets you create non-rectangular borders with any arbitrary shape, for example, a polygon, circle, or shape().
Although border-shape accepts the same shapes as clip-path, it is fundamentally different. border-shape defines the shape of the border, decorates it, and clips only the inside.
border-shape has two variants: one that strokes a shape and another that fills between two shapes.
Related technical references: ChromeStatus.com entry · Spec
CSSPseudoElement interface
The CSSPseudoElement interface represents a pseudo-element in JavaScript.
CSSPseudoElement is returned from Element.pseudo(type), where type is currently ::after, ::before, or ::marker. CSSPseudoElement is a proxy object that represents a pseudo-element. Unlike a pseudo-element, a CSSPseudoElement always exists.
The CSSPseudoElement has the following attributes and methods:
- The
typeattribute is a string that represents the pseudo-element's type. - The
elementattribute is the pseudo-element's ultimate originating element. - The
parentattribute is the pseudo-element's originating element (eitherElementorCSSPseudoElementfor nested pseudo-elements). - The
pseudo(type)method retrieves nested pseudo-elements.
Related technical references: ChromeStatus.com entry · Spec
Pseudo target on events
Specific events now include a .pseudoTarget, which is either CSSPseudoElement (if the interaction was with a pseudo-element) or null.
This provides more specific information about the event origin. For example, it indicates that a ::after pseudo-element was clicked, not just the ultimate originating element (Event.target). Note that Event.target remains unchanged, so the event only has extra information about pseudo-element interaction.
The events are UIEvent, AnimationEvent, and TransitionEvent.
mouseover, mouseout, mouseenter, mouseleave, and their pointer* counterparts are not yet supported.
Related technical references: ChromeStatus.com entry · Spec
Decouple *-width and *-style properties
Chrome 147 aligns with updated CSS specifications for the behavior of the border-width, outline-width, and column-rule-width properties. Previously, if the corresponding border-style, outline-style, or column-rule-style was set to none or hidden, the computed width of these properties was forced to 0px, regardless of the specified value.
With this change, the computed values of border-width, outline-width, and column-rule-width always reflect the author-specified values, independent of the *-style property. Additionally, the resolved values (as returned by getComputedStyle()) for outline-width and column-rule-width also reflect the specified values.
This change aligns Chrome with Firefox and WebKit, which have already implemented this behavior.
Related technical references: ChromeStatus.com entry · Spec
Support path attribute on SVG <textPath> element
This change adds support for the path attribute on the SVG <textPath> element. This lets developers define text path geometry inline using SVG path data and reduces the need for separately defined <path> elements.
The <textPath> element resolves its text path geometry using the following rules:
- If both
pathandhrefare present, geometry is resolved from thepathattribute. - If only the
pathattribute is present and parses successfully, the inline path definition is used. - If the
pathattribute is absent or fails to parse, and anhrefattribute is provided, the referenced<path>element is used as a fallback. - Existing
href-only behavior is preserved without change.
This implementation follows the SVG 2 specification's definition of the path attribute on <textPath>. The resolution behavior is consistent with other browser engines, which improves interoperability and standards compliance. Note: When both path and href are specified on <textPath>, path now takes precedence, according to the SVG 2 specification.
Related technical references: ChromeStatus.com entry · Spec
Device
WebXR Plane Detection
The WebXR Plane Detection API lets sites retrieve the set of planes detected in the user's environment. This is less work for developers and more powerful than using the depth-sensing WebXR feature. For example, planes such as walls that are occluded by objects can still be fully represented if the system is aware of the wall's boundaries. A depth map would show the wall, but objects in front of it would break it up, potentially obscuring the wall's full scope. Furthermore, semantic labeling information is exposed when the device is aware of such labels and they fit into predefined categories, which provides better knowledge about the world.
Related technical references: ChromeStatus.com entry · Spec
DOM
JSON and style support for link rel=modulepreload
Adds support for JSON and style module types as <link rel="modulepreload"> destinations. <link rel="modulepreload"> is already supported in Chromium (see Chromestatus feature), but it currently only supports preloading script-like module scripts. This feature addresses a functionality gap because JSON and CSS module scripts are supported in Chromium elsewhere but not as <link rel="modulepreload"> destinations. You can preload style modules with <link rel="modulepreload" as="style" href="..."> and JSON modules with <link rel="modulepreload" as="json" href="...">.
Related technical references: ChromeStatus.com entry · Spec
XML Parsing in Rust for non XSLT scenarios
Implements the Rust XML parser for scenarios where no XSLT processing is required.
The Rust XML parser improves security by eliminating memory corruption bugs in XML parsing. It replaces the use of libxml2 (written in C) with a safe alternative.
We are deprecating XSLT. While this process continues, you can already use safe Rust XML parsing in scenarios where XSLT is not required.
Related technical references: ChromeStatus.com entry
Graphics
WebXR Layers
WebXR Layers offers a more efficient way to draw immersive content.
In addition to supporting native color and depth textures and texture arrays, it also provides support for different layer types that the system compositor manages (as opposed to JavaScript).
Related technical references: ChromeStatus.com entry · Spec
JavaScript
Math.sumPrecise
Implements a TC39 proposal to add a method to sum multiple values in JavaScript.
Add an iterable-taking Math.sumPrecise method that returns the sum of the values in the iterable using a more precise algorithm than naive summation.
Related technical references: ChromeStatus.com entry · Spec
Network / Connectivity
Request.isReloadNavigation attribute
Adds the read-only boolean attribute isReloadNavigation to the Fetch API's Request interface. This attribute indicates whether the current navigation request was initiated as a user-triggered reload (for example, using the Refresh button, location.reload(), or history.go(0)). This signal is primarily exposed on the Request object within a Service Worker's FetchEvent.
Related technical references: ChromeStatus.com entry · Spec
Performance
Update Device Memory API limits
Updates to a new set of possible values for the Device Memory API:
- Android: 1, 2, 4, 8
- Others: 2, 4, 8, 16, 32 These values replace the old values of 0.25, 0.5, 1, 2, 4, and 8, which have grown outdated.
This reduces fingerprinting risks at the lower end because device capabilities have improved since these were set. It also allows better usage and segmenting of high-end devices, as developers requested. For more information, see Device Memory issue.
Related technical references: ChromeStatus.com entry · Spec
Local Network Access (LNA)
For more information about LNA, see Local Network Access.
Local Network Access restrictions on service worker WindowClient.navigate()
Local Network Access (LNA) restrictions were recently added to prevent websites from unilaterally making requests to local networks and local devices. These restrictions were added for service worker-initiated fetch requests but not for navigations that service workers perform through WindowClient.navigate().
This page highlights the release changes most relevant to users. The official source below contains the full technical detail.
Official source: Chrome 147 Release Notes
Installation notes
After downloading the package, confirm that the branch and platform match your device before launching the installer or extracting the archive. If you only need a standard everyday browser, Stable is usually the safest choice. If you are testing new behavior, Beta, Dev, and Canary are better fits.
Related release pages
For newer or older builds in the same branch, open the category archive linked above. For different platforms, use the related desktop archives in the sidebar.
Frequently asked questions
These FAQ blocks help the page read like a complete release article instead of a download stub, which is better for trust and better for SEO.
Should I use this release or stay on Stable?
If you just want the safest everyday browsing experience, Stable is usually the right default. Preview branches are better for testing, compatibility checks, and early feature access.
Why show exact version numbers so prominently?
Because exact-version queries are common in English search behavior, especially for QA teams, enterprise users, and people trying to reproduce a bug or environment.
Why keep a full article around the download buttons?
A stronger page body gives users context and gives Google clearer signals about what the release page actually covers.
Where should older releases live?
Older versions belong in the category archive page, with this article template handling exact-version landing pages one release at a time.