Download 51.0.2704.106 from the Chrome Stable for macOS
Download Google Chrome 51.0.2704.106 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 51.0.2704.106
Google Chrome 51.0.2704.106 is available here as part of the macOS Stable archive. Use this release page when you want the exact version, the current package details, and quick access to the correct installer.
Chrome 51.0.2704.106 is part of the Chrome 51 release line. Check the official update below for the published security, stability, and platform details.
Credential Management API
Additional features in this release
- The Intersection Observer API allows sites to detect element intersections as an asynchronous event, eliminating the need for costly document monitoring.
- The latest version of Chrome supports passive event listeners, which allow sites to run JavaScript in response to touch and wheel input without blocking scrolling.
- Blobs are now constructed and transferred to the browser asynchronously, allowing large data files to be moved without janking the page.
- The SameSite cookie attribute allows sites to restrict cookies to requests from the same domain.
- Support for the AES_256_GCM cipher on TLS improves security on servers that choose cipher by key size, where legacy 256-bit ciphers were used over more secure, but smaller, ciphers.
- Array.prototype.values() makes it easier to iterate over the elements of an array.
- The function name property now infers useful names for properties and methods with computed property names, making debugging easier with clearer labels and error messages.
- Iterators that are part of a for-of loop that terminates early now call a developer-provided close() method, making it easier to respond to the end of an iteration.
- Symbol.species makes subclassing built-in classes such as Array and RegExp more powerful by allowing custom constructors to be called for derived objects.
- RegExp subclasses can overwrite the exec() method to change the matching algorithm, making it easier to write custom subclasses.
- Sites can now can implement their own Symbol.hasInstance() method to customize behavior of the instanceof operator.
- Sites can now retrieve a service worker’s Client object using Clients.get(id).
- ServiceWorker.postMessage() now fires an ExtendableMessageEvent on ServiceWorkerGlobalScope, allowing the message to extend the service worker lifetime and provide more accurate message sources.
- The HTML referrerpolicy attribute allows sites to control what information is sent in the referrer headers of , ,
, and
- The UIEvents KeyboardEvent |key| attribute allows sites to reliably determine the meaning of the key being pressed.
- Sites can now detect the duration of batched offline audio contexts using the OfflineAudioContext.length attribute.
- SPDY and ALPN support has been removed in favor of the standards-based HTTP/2 protocol.
- The ability to customize the message shown in the onbeforeunload dialog has been removed to protect users from malicious websites and align with other browsers.
- Chrome on Android now uses the same media pipeline as desktop Chrome, improving WebAudio support and allowing sites to interact with the playback rate on
- The latest version of Chrome improves web animations interoperability by supporting lists of values and removing dashed-names in keyframes.
- Chrome now requires a border style to paint border images, improving spec compliance and interoperability.
- Percentages can now be used for the sizes of flex item children.
- DHE-based ciphers have been deprecated and will be removed in Chrome 52 in favor of ECDHE ciphers to improve TLS security.
Official source: Official Chrome update
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.