{"id":31551179,"url":"https://github.com/buzz-t/rusted-chromium","last_synced_at":"2026-04-19T04:37:26.996Z","repository":{"id":39614180,"uuid":"244176901","full_name":"BuZZ-T/rusted-chromium","owner":"BuZZ-T","description":"node.js based CLI tool to download outdated versions of chromium","archived":false,"fork":false,"pushed_at":"2025-09-20T15:19:51.000Z","size":1343,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-28T01:38:37.271Z","etag":null,"topics":["chrome","chromium","cli","download","downloader","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BuZZ-T.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-03-01T15:47:32.000Z","updated_at":"2025-09-20T15:19:55.000Z","dependencies_parsed_at":"2023-02-08T08:46:10.905Z","dependency_job_id":"de18a396-a781-45d1-b496-deb403b1cc9e","html_url":"https://github.com/BuZZ-T/rusted-chromium","commit_stats":null,"previous_names":["buzz-t/rusted_chromium"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/BuZZ-T/rusted-chromium","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BuZZ-T%2Frusted-chromium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BuZZ-T%2Frusted-chromium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BuZZ-T%2Frusted-chromium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BuZZ-T%2Frusted-chromium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BuZZ-T","download_url":"https://codeload.github.com/BuZZ-T/rusted-chromium/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BuZZ-T%2Frusted-chromium/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015301,"owners_count":26085683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrome","chromium","cli","download","downloader","typescript"],"created_at":"2025-10-04T18:03:21.000Z","updated_at":"2025-10-13T13:12:47.122Z","avatar_url":"https://github.com/BuZZ-T.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rusted chromium\n\n[![NPM Version](https://img.shields.io/npm/v/rusted-chromium.svg)](https://www.npmjs.com/package/rusted-chromium) [![Package License](https://img.shields.io/npm/l/rusted-chromium.svg)](https://www.npmjs.com/package/rusted-chromium) [![Build Status](https://img.shields.io/github/actions/workflow/status/BuZZ-T/rusted-chromium/test.yml?branch=main)](https://img.shields.io/github/actions/workflow/status/BuZZ-T/rusted-chromium/test.yml?branch=main)\n\nThis cli tool can be used to download old (and therefore unsupported) versions of chromium.\n\n## Table of contents\n\n* [Disclaimer](#disclaimer-)\n* [Installation](#installation)\n* [Build on your own](#build-on-your-own)\n* [Supported node versions](#supported-node-versions)\n* [All available flags](#all-available-flags)\n* [Examples](#examples)\n* [Chromium Version Format](#chromium-version-format)\n* [Use as API](#use-as-api)\n* [FAQ](#faq)\n\n## Disclaimer 🔥\n\nReasons to use this tool:\n\n* Verify that bugs that look browser-version-related, really are.\n\nReasons to NOT use this tool:\n\n* Reobtain removed functionality in Chrome(-ium)\n\nTo be explicit:\n\n**⚠️ The downloaded versions are *OUTDATED* and *UNSUPPORTED*! Some known and exploitable bugs, that are already fixed on newer versions, still exist. That's why new versions were released! Use this only for debugging purposes for websites YOU CONTROL! NEVER use these versions for browsing! NEVER EVER enter private data in these browser versions and NEVER EVER login to accounts with these browser versions!!! ⚠️**\n\n## Installation\n\n**ⓘ Versions older than 0.1.0 are not working anymore. Please see the [FAQ](#rusted-chromium-is-not-working-anymore-i-get-a-410-gone-http-statuscode-from-a-chrome-api) and upgrade.**\n\n\n#### via npm\n\n```\nnpm install -g rusted-chromium\nrusted-chromium --help\n```\n\n#### via docker\n\n```sh\ndocker pull buzztt/rusted-chromium\n\nmkdir out\ndocker run -ti --mount type=bind,source=\"$(pwd)/out\",target=/app/out-dir rusted-chromium --folder out-dir\n```\n\n## Build on your own\n\n#### using npm\n```sh\ngit clone https://github.com/BuZZ-T/rusted-chromium\ncd rusted-chromium\nnpm install\nnpm test\n\n# using ts-node\nnpm start -- --help # the two extra dashes are important to pass arguments to the script!\n# building and running\nnpm run build\n./bin/rusted-chromium.js --help\n\n```\n\n#### using docker\n```sh\ngit clone https://github.com/BuZZ-T/rusted-chromium\n\ncd rusted-chromium\ndocker build -t rusted-chromium .\n```\n\n## Supported node versions\n\n20.x, 22.x, 24.x\n\n## All available flags\n\n| Flag | Short | Parameter | Default | Description |\n|-|-|-|-|-\n|`--single`|`-s`| string | - | Use a specific version. No interactive prompt is displayed. Several flags have no effect (like `-d`, `-i`, `-n`, `-M`, `-m`, `-r` and `-O`). Terminates with an error status code of 1, if no binary exists.\n| `--max`| `-M` | integer | 10000 | Maximum version which should be selectable.\n| `--min`| `-m` | integer | 0 | Minimum version which should be selectable.\n| `--max-results`| `-r` | integer | 10 | Maximum number of results to select. Directly downloads the binary, if set to 1. **Important:**  `--max-results` is set to `Infinity`, if `--min` is set and `--max-results` is not set, so the default is overridden!\n| `--os`| `-o` | \"win\"/\"linux\"/\"mac\"/\"darwin\" | The operation system on the current system | Set the operation system of the binary.\n| `--arch`| `-a` |  \"x86\"/\"x64\" for \"win\" or \"linux.  \"x64\"/\"arm\" for \"mac\" | The architecture on the current system | Set the architecture of the binary. The flag is only regarded, if `--os` is present.\n| `--channel` | `-c` | \"Canary\"/\"Dev\"/\"Beta\"/\"Stable\" (depending on architecture) | \"Stable\" | Set the channel for fetching releases.\n| `--unzip` | `-z` | - | - | Directly unzip the downloaded zip-file and delete the .zip afterwards\n| `--decrease-on-fail`| `-d` | - | - | Automatically try the next lower version, if the selected version has no binary.\n| `--increase-on-fail`| `-i` | - | - | Automatically try the next higher version, if the selected version has no binary.\n|`--non-interactive` | `-n` | - | - | Don't display the version selection. Automatically select the newest version in the available range (set by `--min`, `--max` and `--max-results`). Only works when `--decrease-on-fail` is set as well.\n|`--no-download` | `-l` | - | - | Don't download the binary if it's found.\n|`--folder` | `-f` | `path/to/folder` | Current folder executing the command | Set the folder to which the archive of the chromium binary or the extracted folder (if the flag `--unzip` is set)\n|`--only-newest-major` | `-O`| - | - | Show only the newest version for every major version in the user selection. If the newest versions are not available for the current os, they are skipped.\n| `--list` | | - | false | Only log all matching versions to stdout, quit the program afterwards.\n| `--quiet` | `-q` | - | false | Suppress all log output.\n|`--no-color` | `-C` | - | false | Suppress colors in log output.\n|`--no-progress` | `-P` | - | false | Suppress progress bar log output.\n| `--debug` | | - | false | Add additional debug logging.\n| `--version`| `-V` | - | - | Show current version.\n| `--help`| `-h` | - | - | Display a help with all available flags.\n\n## Examples\n\n##### Download a specific version, exit and fail if it does not exist\n```bash\n# long version\nrusted-chromium --single 70.0.3539.100\n# short version\nrusted-chromium -s 70.0.3539.100\n```\n\n##### Define a minimum and maximum major version\n```bash\n# long version\nrusted-chromium --min 60 --max 70\n# short version\nrusted-chromium -m 60 -M 70\n```\n##### Define a maximum major/minor version\n*NOTE: Currently makes no sense, as the minor version is always \"0\".*\n```bash\nrusted-chromium --max 70.0\n```\n\n##### Define a maximum major/minor/branch version\n```bash\nrusted-chromium --max 70.0.3539\n```\n##### Define a maximum major/minor/branch/patch version\n```bash\nrusted-chromium --max 70.0.3539.100\n```\n\n##### Define a maximum version and an amount of results\n```bash\n# long version\nrusted-chromium --max 70 --max-results 30\n# short version\nrusted-chromium -M 70 -r 30\n```\n\n##### Don't download anything\n\n```bash\n# long version\nrusted-chromium --max 80 --decrease-on-fail -non-interactive --no-download\n# short version\nrusted-chromium -M 80 -dnl\n```\n\n##### Directly download the version without interactive selection\n*NOTE: This supports `--max` `--min` as well!*\n```bash\n# long version\nrusted-chromium --max-results 1\n# short version\nrusted-chromium -r 1\n```\n\n##### Automatically unzip the downloaded archive\n```bash\n# long version\nrusted-chromium --unzip\n# short version\nrusted-chromium -z\n```\n\n##### Automatically try the next lower version, if the selected version has no binary\n*NOTE: This regards `--min`, `--max` and `--max-results`*\n```bash\n# long version\nrusted-chromium --max 30 --decrease-on-fail\n# short version\nrusted-chromium -M 30 -d\n```\n\n##### Automatically try the next higher version, if the selected version has no binary\n*NOTE: This regards `--min`, `--max` and `--max-results`*\n```bash\n# long version\nrusted-chromium --max 30 --increase-on-fail\n# short version\nrusted-chromium -M 30 -i\n```\n\n##### Automatically select the newest of 7 results and automatically try the next lower version, if the tried version has no binary\n```bash\n# long version\nrusted-chromium --max 78 --max 79.0.3909.0 --max-results 7 --decrease-on-fail --non-interactive\n# short version\nrusted-chromium -M 79.0.3909.0 -r 7 -d -n\n```\n\n##### Download to an alternative directory\n```bash\n# long version\nrusted-chromium --folder /tmp/rusted\n# short version\nrusted-chromium -f /tmp/rusted\n```\n\n##### Suppress colors in log output\n```bash\n# long version\nrusted-chromium --no-color\n# short version\nrusted-chromium -c\n```\n\n##### Suppress progress bars in log output\n```bash\n# long version\nrusted-chromium --no-progress\n# short version\nrusted-chromium -P\n```\n\n##### Suppress all log output\n```bash\n# long version\nrusted-chromium --quiet\n# short version\nrusted-chromium -q\n```\n\n##### List all matching versions and quit\n```bash\nrusted-chromium --list\n```\n\n##### Show the help and quit\n```bash\n# long version\nrusted-chromium --help\n# short version\nrusted-chromium -h\n```\n\n##### Show the version and quit\n```bash\n# long version\nrusted-chromium --version\n# short version\nrusted-chromium -V\n```\n\n## Chromium Version Format\n\nA chrom(e/ium) version might look like this: \"60.0.3112.93\". The version can be split in:\n\n* Major version (here: \"60\")\n* Minor version (here: \"0\")\n* Branch version (here: \"3112\")\n* Patch version (here: \"93\")\n\nThe minor version is not used and is always \"0\".\n\nContrary to what [semantic versioning](https://semver.org/) would require, the branch version is not reset to zero, when the major version is increased. Instead, the branch version is also increased.\n\nE.g. the latest 60.x version is \"60.0.3112.118\", the first 61.x version is \"61.0.3113.0\".\n\n### Partial Chromium Version Format\n\nWhen declaring the Chromium Version Format in **rusted-chromium**, prefixes can be used.\nE.g.:\n\n* \"60\" means \"any version with major version 60\"\n* \"60.0.3112\" means \"version 60.0.3112 with arbatrary patch version\"\n\n## Use as API\n\nrusted-chromium can be used as API as well. See more examples [here](https://github.com/BuZZ-T/rusted-chromium/blob/main/examples/README.md).\n\n### Download chromium\n\nTo download a chromium version, use `downloadChromium`:\n```ts\nimport { ComparableVersion, downloadChromium } from 'rusted-chromium';\n\ndownloadChromium({\n    arch: 'x64',\n    autoUnzip: false,\n    color: true,\n    debug: false,\n    download: true,\n    downloadFolder: null,\n    interactive: true,\n    inverse: false,\n    list: false,\n    max: new ComparableVersion(95, 0, 0, 0),\n    min: new ComparableVersion(0,0,0,0),\n    onFail: 'nothing',\n    onlyNewestMajor: false,\n    os: 'linux',\n    progress: true,\n    quiet: false,\n    results: 10,\n    single: null,\n})\n```\n\n### Directly pass CLI flags\nIf you want to directly pass `process.argv` and extend or restrict the available flags, directly import `rusted`:\n```ts\nimport { rusted } from 'rusted-chromium'\n\nrusted(process.argv, 'linux')\n\n```\n\n### Use defaults and override specific settings\n\nThis is probably the most useful version in a CI envionment. This requires less config options, as many of them are not regarded when using `single`.\n\n```ts\nimport { downloadChromium } from 'rusted-chromium';\n\ndownloadChromium.withDefaults({\n    arch: 'x64',\n    single: \"10.0.0.0\",\n    os: 'linux',\n    autoUnzip: false,\n    download: true,\n    downloadFolder: null,\n});\n```\n\n### Use the fluent API\n\nThe fluent API can be accessed by using `.with`.\n\n```ts\nimport { downloadChromium } from 'rusted-chromium'\n\ndownloadChromium.with\n    .arch('x64')\n    .os('linux')\n    .interactive()\n    .start()\n```\n\nFor the single mode (in normal config `single: \u003cversion\u003e`), use `.withSingle`:\n\n```ts\ndownloadChromium.withSingle\n\t.download()\n\t.autoUnzip()\n\t.single('10.11.12.13')\n\t.start()\n```\n\nBe aware that `.start()` is only available, after `.single(...)` has been used.\n\n**See more examples to use the API [here](https://github.com/BuZZ-T/rusted-chromium/blob/main/examples/README.md).**\n\n## FAQ\n\n### Why do you often write \"Chrom(e/ium)\"?\n\nThe famous browser chrome is based on the free licensed browser chromium. If you use **rusted-chromium**, you are downloading a chromium version. The [versioning](#chromium-version-format) are used for both chrome and chromium so \"Chrom(e/ium)\" means \"the version of chrome and/or chromium\"\n\n### Can i contribute?\nI'm accepting pull requests and feature requests (no guarantee that i will implement this fast or implement this at all, but feel free to ask).\n\n### Do you build chromium versions? Do you store chromium binaries/archives? Do you have your own chromium repository?\n\nNO, NO and NO. This CLI basically automates the manual steps mentioned [here](https://www.chromium.org/getting-involved/download-chromium/#downloading-old-builds-of-chrome-chromium).\nSo only official chromium APIs are called and only official binaries are downloaded.\n\nSo, this project:\n\n* has **NO own repository** for chromium sources\n* **does not build** versions of chromium itself\n* **does not store** binaries or archives of chromium\n\n### I'm starting a downloaded version, but it has the same version as my normally installed one...\n\nA session with the newer version was still running. In this case, chrom(e/ium) detects that and launches a window in the same session.\nThere are two possible solutions for this:\n\n* Make sure to first close all running instances of chrom(e/ium)!\n* Start your downloaded version of chromium with the flag `--user-data-dir=\u003cfolder\u003e`. See [chromium.googlesource.com](https://chromium.googlesource.com/chromium/src.git/+/master/docs/user_data_dir.md#overriding-the-user-data-directory) for more information.\n\n### rusted-chromium is not working anymore. I get a 410 Gone HTTP-Statuscode from a chrome API...\n\nThe  [OmahaProxy](https://omahaproxy.appspot.com/), which API was used by rusted-chromium, has been switched off. With version 0.1.0, rusted-chromium migrated to [ChromiumDash](https://chromiumdash.appspot.com/) and is functional again. But earlier versions, with version number \"0.0.X\" are not usable anymore. Be sure to install version 0.1.0 or later!\n\n### What is new / has changed?\n\nSee the [Changelog](CHANGELOG.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuzz-t%2Frusted-chromium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuzz-t%2Frusted-chromium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuzz-t%2Frusted-chromium/lists"}