40

Chrome websites offers only download for the latest version. However it is sometimes necessary to debug a web app against an older version of Chrome.

There are several third-party sites (as mentioned in https://stackoverflow.com/questions/33705280/how-to-download-an-old-version-of-chrome) that allows to download Chrome binaries but I don't want to download from those third-party for security reasons.

So the question is is there some way to download older versions of Chrome from a google managed server?

9 Answers 9

67

Older version of Chrome are not publicly available but you can find and download the matching Chromium binaries from the Chromium build server.

To do so follow the procedure below (derived from Chromium wiki):

1/ Find the Full Version Number

You can lookup the full version number matching a release by searching in the Chrome Releases Blog

Example:

2/ Find the Branch Base Position

Use the "Version Information" tool to find a Branch Base Position for the Full Version number. To do that enter the Full Version Number and press lookup. If the version returns an empty Branch Base Position try increment the last component of the version until you get a Branch Base Version.

Example:

Looking up 69.0.3497.81 image.png retrieves no Branch Base Position

But looking up 69.0.3497.82 enter image description here retrieves Branch Base Position: 576753

3/ Download the content for Branch Base Position and platform

Then download the content from the url where you replaced your platform and Branch Base Position value. https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=[platform]/[Branch Base Position]/

Where [platform] is either "Win_x64", "Linux_x64" or "Mac"

Example:

for Chrome 69 on Linux https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Linux_x64/576753/

6
  • 5
    I think this no longer works for recent versions of chrome Sep 15, 2021 at 11:02
  • 4
    @ShmuelKamensky try chromium.cypress.io , the links seem to all be official and you can filter by OS. Oct 10, 2021 at 3:58
  • I've provided a method to do this programmatically, and I can confirm that Sebastien's method works, but will be losing support in 2023. I have detailed a few additional official methods other than omahaproxy for getting around the planned switchover from omahaproxy to ChromiumDash. Apr 27, 2023 at 23:38
  • Are all of these solutions for x86 Silicon? Are builds provided that work on Apple Silicon? It seems that Mac builds are provided but they could target Intel chips.
    – user391339
    May 11, 2023 at 17:30
  • all those are chromium and you can not build Chrome of it Sep 22, 2023 at 11:33
26

@Sebastien is right.

But if you want to download Chromium without known any version number, this page provides verison list to download:

https://vikyd.github.io/download-chromium-history-version/

Unofficial page, but official downlaod links inside. still safe.

4
  • 3
    Neither Chrome, nor official links. Nov 7, 2021 at 7:28
  • @DanielSmedegaardBuus . It's Chromium and official download links.
    – vikyd
    Nov 8, 2021 at 1:14
  • Chromium isn't Chrome, but I stand corrected on the official status of the links. I wasn't aware that chromium.org actually offered binary builds :) Nov 10, 2021 at 19:21
  • Best answer, thank you @vikyd for building this May 17, 2022 at 12:09
22

You can use Update API used by Chrome to discover links to the latest 14 releases. The PowerShell code bellow prints the links for the version 115.0.

$ChromeVersion = '115'

$requestId = ([String][Guid]::NewGuid()).ToUpper()
$sessionId = ([String][Guid]::NewGuid()).ToUpper()

$xml = @"
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" updater="Omaha" sessionid="{$sessionId}"
    installsource="update3web-ondemand" requestid="{$requestId}">
    <os platform="win" version="10.0" arch="x64" />
    <app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" version="5.0.375"
        ap="x64-stable-statsdef_0" lang="" brand="GCEB">
        <updatecheck targetversionprefix="$ChromeVersion"/>
    </app>
</request>
"@

$webRequest = @{
    Method    = 'Post'
    Uri       = 'https://tools.google.com/service/update2'
    Headers   = @{
        'Content-Type' = 'application/x-www-form-urlencoded'
        'X-Goog-Update-Interactivity' = 'fg'
    }
    Body      = $Xml
}

$result = Invoke-WebRequest @webRequest -UseBasicParsing
$contentXml = [xml]$result.Content
$status = $contentXml.response.app.updatecheck.status
if ($status -eq 'ok') {
    $package = $contentXml.response.app.updatecheck.manifest.packages.package
    $urls = $contentXml.response.app.updatecheck.urls.url | ForEach-Object { $_.codebase + $package.name }
    Write-Output "--- Chrome Windows 64-bit found. Hash=$($package.hash) Hash_sha256=$($package.hash_sha256)). ---"
    Write-Output $urls
}
else {
    Write-Output "Chrome not found (status: $status)"
}

For Windows 64-bit the links are the following:

You can find the detailed explanation of how it works here

5
  • 1
    Is there a way to get the MSI downloads like this?
    – jgstew
    Apr 24, 2023 at 15:20
  • 7
    Technically, this is the only correct answer. The other answers were for chromium. Apr 27, 2023 at 22:48
  • 1
    Same request as jgstew. Is is possible to retrieve the urls for teh Enterprise installer .msi "GoogleChromeStandaloneEnterprise64.msi"? Would you need to change the html post body parament ap="x64-stable-statsdef_0" to something else?
    – user51760
    May 3, 2023 at 8:56
  • 1
    @jgstew I am not aware of any way to download old MSI installers. Even when you install Chrome from MSI, it still uses EXE links for updates. May 9, 2023 at 11:13
  • Great use of google API. Pretty sure Its implied but just in case, you can use this to get specific release right to the patch e.g. 117.0.5938.132. Just set the variable to the desired full version. For example, $ChromeVersion = "117.0.5938.132" and in the below line just use that variable instead of using as the major version <updatecheck targetversionprefix="$ChromeVersion"/> Oct 6, 2023 at 12:12
11

I was having some trouble with the accepted answer, but I found this list of official download links by version number:

https://chromium.cypress.io

1
  • 4
    Note this is Chromium, not Chrome but is a more user friendly way of browsing the builds in the accepted answer
    – jonny133
    Jan 4, 2023 at 13:14
3

My answer will be Linux specific. This is for actual chrome, not chromium.

I was able to get a past version by modifying the current stable version link with the version I wanted. For example, the current link is:

https://dl.google.com/linux/deb/pool/main/g/google-chrome-stable/google-chrome-stable_117.0.5938.132-1_amd64.deb

I want version 114.0.5735.198 so I changed the link above to this and it worked: https://dl.google.com/linux/deb/pool/main/g/google-chrome-stable/google-chrome-stable_114.0.5735.198-1_amd64.deb

I have no idea how many versions they keep in that folder, so this may not take you very far back and they could clear the old versions at any time.

I did use the reference @sebastien gave to the Chrome Release Blog to get my desired version number.

1
1

If you are looking to do this programmatically for Chrome, @Andrzej Jakuszyk's answer is correct.

If you are looking to do this programmatically for Chromium (which the other answers show you how to do manually/unofficially) you can make use of several different official tools:

A. Get the tags with (this is actually very fast - only takes a couple of seconds to pull all of the tags):

  • git ls-remote --tags <repo>
    • where repo is either:
      • https://chromium.googlesource.com/chromium
      • https://github.com/chromium/chromium.git

B. Then, get the base position

  • Google uses commit positions as well as commit hashes
    • they are serialized commit positions on a branch (makes it easier to navigate through commit histories). They can be found at the tail end of Google git commit messages. It will be in the format <reference-head>@{<position>}
    • a base position is the position on the main branch where the feature branch broke off from (it is the common ancestor)
  1. with omahaproxy's dep.json (which is a very clean and official method, but is losing support next year as it is being replaced by ChromiumDash)
    • https://omahaproxy.appspot.com/deps.json?version=<tag from git ls-remote>
  2. or by parsing the git commit history with:
    1. git fetch + git log (significantly slower method - can take 30+ minutes to parse) directly on the chromium source code
    2. or the GitHub REST API (significantly faster and still official, but not as official as using git fetch) for the GitHub mirror - https://github.com/chromium/chromium
    • Both using the GitHub repo and the git fetch commands directly are both officially supported methods
      • However, as git is just a part of Google's versioning control system, and GitHub is a mirror of that git repo, the mirror isn't as tightly supported as the original repo itself.

        Google uses Piper for source code management, so the GH mirror is just a "nicety" provided by Google.

C. Once you've gotten the base position, you can use step 3 from @mmel/@Sebastion's answer to get the download link

1

I found this gist https://gist.github.com/pudquick/8cd029d0967ee6f5ee353ed5a967f33c, I forked it and added the targetversionprefix param to the XML. And made it python3 compat. Download it. modify the mac OS version to your system's version and update the target_version_prefix.

https://gist.github.com/ryfloyd/afc8d87947a520e6094fec4878051ea8

Running it python google_chrome_update_checker.py and it will output the download link:

http://edgedl.me.gvt1.com/edgedl/release2/chrome/adz7khcqxkffkhisiosxcdsiedgq_114.0.5735.198/GoogleChrome-114.0.5735.198.dmg

1

Looks like you can now just go to:

https://chromiumdash.appspot.com/branches

...to find the links easily (via a redirect from https://omahaproxy.appspot.com/ which was the URL suggested in a previous post).

1

The simplest method for versions of Chromium

  1. Use Ctrl+F to search this page for the latest version you're looking for that's in the operating system you need (eg. version 114 for Linux).

  2. Once you've found the version and commit you want, scroll to the 5th column for its download position (not the position, which is the 4th column). Both position and download position are similar 7-digit numbers.

The download position should be all you need to programmatically grab the Chrome version you need. For example, the following step in a GitHub Actions workflow file will grab version 114 of Chromium for integrated testing:

- name: Get Chromium v114
  uses: browser-actions/setup-chrome@latest
  with:
    chrome-version: 1135561 # Download position for a commit of Chrome v114

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.