Version article

Download 138.0.7204.183 from the Chrome Stable for Windows 64-bit

Download Google Chrome 138.0.7204.183 with the branch, platform, release date, and file size shown clearly on the same page.

Stable Windows 64-bit Published 2025-07-30
Version 138.0.7204.183
Release date 2025-07-30
Platform Windows 64-bit
File size 164.65MB
Quick facts

What users usually want to know first

Branch Stable
Clicks

What changed in Chrome 138.0.7204.183

Google Chrome 138.0.7204.183 is available here as part of the Windows 64-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: June 24th, 2025

Unless otherwise noted, the following changes apply to Chrome 138 stable channel release for Android, ChromeOS, Linux, macOS, and Windows.

CSS and UI

CSS Sign-Related Functions: abs() , sign()

The sign-related functions abs() and sign() compute various functions related to the sign of their argument.

The abs(A) function contains one calculation A, and returns the absolute value of A, as the same type as the input: if A's numeric value is positive or 0+, just A again; otherwise -1 * A.

The sign(A) function contains one calculation A, and returns -1 if A's numeric value is negative, +1 if A's numeric value is positive, 0+ if A's numeric value is 0+, and 0⁻ if A's numeric value is 0⁻. The return type is a <number>, made consistent with the type of the input calculation.

Interpolation progress functional notation: CSS progress() function

The progress() functional notation returns a <number> value representing the position of one calculation (the progress value) between two other calculations (the progress start value and progress end value). The progress() function is a math function.

CSS sibling-index() and sibling-count()

The sibling-index() and sibling-count() functions can be used as integers in CSS property values to style elements based on their position among its siblings, or the total number of siblings respectively. These functions can be used directly as integer values, but more interestingly inside calc() expressions.

CSS stretch sizing keyword

A keyword for CSS sizing properties (for example, width and height) that lets elements grow to exactly fill their containing block's available space. It is similar to '100%', except the resulting size is applied to the element's margin box instead of the box indicated by box-sizing. Using this keyword lets the element keep its margins while still being as large as possible. An unprefixed version of -webkit-fill-available.

CSS env variable for OS-level font scale

Exposes a user's preferred font scale to CSS. Without this, it's not practical for a page to detect if the user has changed their preferred font size using the Operating System's preferences. This CSS environment variable will reflect the scale chosen by the user.

Devices

Web serial over Bluetooth on Android

This feature lets web pages and web apps connect to serial ports over Bluetooth on Android devices.

Chrome on Android now supports Web Serial API over Bluetooth RFCOMM. Existing enterprise policies (DefaultSerialGuardSetting, SerialAllowAllPortsForUrls, SerialAllowUsbDevicesForUrls, SerialAskForUrls and SerialBlockedForUrls) on other platforms are enabled in future_on states for Android. All policies except SerialAllowUsbDevicesForUrls will be enabled after the feature is enabled. SerialAllowUsbDevicesForUrls will be enabled in a future launch after Android provides system level support of wired serial ports.

Viewport Segments Enumeration API

The Viewport Segments API allows developers to adapt their web layout to target foldable devices. The viewport segments defines the position and dimensions of a logically separate region of the viewport. Viewport segments are created when the viewport is split by one or more hardware features (such as a fold or a hinge between separate displays) that act as a divider; segments are the regions of the viewport that can be treated as logically distinct by the developer.

JavaScript

Update QuotaExceededError to a DOMException derived interface

Previously, when the web platform wants to tell you when you've exceeded quota, it will use DOMException with the specific name property set to QuotaExceededError. However this does not allow carrying additional information.

This proposes removing "QuotaExceededError" from the list of built-in DOMException names, and instead creates a class name QuotaExceededError from the list of built-in DOMException and has the additional optional properties quota and requested. We propose all instances of specs that throw "QuotaExceededError" DOMExceptions get upgraded to instead throw QuotaExceededErrors. For now, such specs would leave the quota and requested properties at their default value of null, but they could eventually upgrade to include that data, if it's useful for their use case (and isn't, e.g., a privacy leak).

Web APIs

Translator API

A JavaScript API to provide language translation capabilities to web pages. Browsers are increasingly offering language translation to their users. Such translation capabilities can also be useful to web developers. This is especially the case when browser's built-in translation abilities cannot help. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable.

Language Detector API

A JavaScript API for detecting the language of text, with confidence levels.

An important supplement to translation is language detection. This can be combined with translation, for example, taking user input in an unknown language and translating it to a specific target language. Browsers today often already have language detection capabilities, and we want to offer them to web developers through a JavaScript API, supplementing the translation API. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable.

Summarizer API

Summarizer API is a JavaScript API for producing summaries of input text, backed by an AI language model. Browsers and operating systems are increasingly expected to gain access to a language model. By exposing this built-in model, we avoid every website needing to download their own multi-gigabyte language model, or send input text to third-party APIs. The summarizer API in particular exposes a high-level API for interfacing with a language model in order to summarize inputs for a variety of use cases (GitHub), in a way that does not depend on the specific language model in question. An enterprise policy (GenAILocalFoundationalModelSettings) is available to disable the underlying model downloading which would render this API unavailable.

Escape < and > in attributes on serialization

Escape < and > in values of attributes on serialization.

This mitigates the risk of mutation XSS attacks, which occur when value of an attribute is interpreted as a start tag token after being serialized and re-parsed.

Crash Reporting API: is_top_level and visibility_state

This feature adds is_top_level and visibility_state string fields to the crash reporting API body that gets sent to the default reporting endpoint for crash reports.

Fire the pushsubscriptionchange event upon resubscription

Fire the pushsubscriptionchange event in service workers when an origin for which a push subscription existed in the past, but which was revoked because of a permission change (from granted to deny/default), is re-granted notification permission.

The event will be fired with an empty oldSubscription and newSubscription.

Multimedia

Add support for video frame orientation metadata to WebCodecs

Introduces rotation: int and flip: bool values to various video related interfaces in WebCodecs so that developers can work with frame sources that have orientation (For example, Android cameras, certain media).

The VideoFrame interface grows the ability to create VideoFrames with arbitrary rotation and flip as well as accessors for this information on the VideoFrame object.

The VideoDecoderConfig object gains rotation and flip fields that are emitted on decoded VideoFrame objects automatically.

The VideoEncoder class gains mechanisms for passing rotation and flip information from encode() to the VideoDecoderConfig emitted as part of EncodedVideoChunkMetadata. If encode() is called with frames with different orientations a nonfatal exception will be thrown. configure() may be used to reset the allowed orientation.

Performance

Add prefetchCache and prerenderCache to Clear-Site-Data header

Two new values for the Clear-Site-Data header to help developers target clearing the prerender and prefetch cache: "prefetchCache" and "prerenderCache".

Speculation rules: target_hint field

This extends speculation rules syntax to allow developers to specify the target_hint field.

This page highlights the release changes most relevant to users. The official source below contains the full technical detail.

Official source: Chrome 138 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.