Need help with brave-browser?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

10.9K Stars 1.2K Forks Mozilla Public License 2.0 5.1K Commits 3.8K Opened issues


Next generation Brave browser for Android, Linux, macOS, Windows.

Services available


Need anything else?

Contributors list

Brave Browser


This repository holds the build tools needed to build the Brave desktop browser for macOS, Windows, and Linux. In particular, it fetches and syncs code from the projects we define in



You can visit our website to get the latest stable release.

Other repositories

For other versions of our browser, please see:


Please see the contributing guidelines.


Join the Q&A community if you'd like to get more involved with Brave. You can ask for help, discuss features you'd like to see, and a lot more. We'd love to have your help so that we can continue improving Brave.

Help us translate Brave to your language by submitting translations at

Follow @brave on Twitter for important news and announcements.

Install prerequisites

Follow the instructions for your platform:

Clone and initialize the repo

Once you have the prerequisites installed, you can get the code and initialize the build environment.

git clone [email protected]:brave/brave-browser.git
cd brave-browser
npm install

this takes 30-45 minutes to run

the Chromium source is downloaded which has a large history

npm run init

brave-core based android builds should use

npm run init -- --target_os=android --target_arch=arm
(or whatever cpu type you want to build for)

You can also set the targetos and targetarch for init and build using

npm config set target_os android
npm config set target_arch arm

Build Brave

The default build type is component.

# start the component build compile
npm run build

To do a release build:

# start the release compile
npm run build Release

brave-core based android builds should use

npm run build -- --target_os=android --target_arch=arm
or set the npm config variables as specified above for

Build Configurations

Running a release build with

npm run build Release
can be very slow and use a lot of RAM especially on Linux with the Gold LLVM plugin.

To run a statically linked build (takes longer to build, but starts faster)

npm run build -- Static

To run a debug build (Component build with is_debug=true)

npm run build -- Debug

Brave staff may also want to try Goma for faster builds.

Run Brave

To start the build:

npm start [Release|Component|Static|Debug]

Update Brave

npm run sync -- [--force] [--init] [--create] [brave_core_ref]

This will attempt to stash your local changes in brave-core, but it's safer to commit local changes before running this

npm run sync
will (depending on the below flags):
  1. 📥 Update sub-projects (chromium, brave-core) to latest commit of a git ref (e.g. tag or branch)
  2. 🤕 Apply patches
  3. 🔄 Update gclient DEPS dependencies
  4. ⏩ Run hooks (e.g. to perform
    npm install
    on child projects)

| flag | Description | |---|---| |

[no flags]
|updates chromium if needed and re-applies patches. If the chromium version did not change it will only re-apply patches that have changed. Will update child dependencies only if any project needed updating during this script run
*Use this if you want the script to manage keeping you up to date instead of pulling or switching branch manually. *| |
|when used with
it will create a branch if one does not already exist| |
|updates both Chromium and brave-core to the latest remote commit for the current brave-core branch and the Chromium ref specified in brave-browser/package.json (e.g.
). Will re-apply all patches. Will force update all child dependencies
*Use this if you're having trouble and want to force the branches back to a known state. *| |
|force update both Chromium and brave-core to the versions specified in brave-browser/package.json and force updates all dependent repos - same as
npm run init


npm run sync brave_core_ref
to checkout the specified brave-core ref and update all dependent repos including chromium if needed


Create a new branch

brave-core> git checkout -b branch_name


brave-browser> npm run sync -- --create branch_name

Checkout an existing branch or tag

brave-core> git fetch origin
brave-core> git checkout [-b] branch_name
brave-core> npm run sync
...Updating 2 patches...
...Updating child dependencies...
...Running hooks...


brave-browser> npm run sync --create branch_name
...Updating 2 patches...
...Updating child dependencies...
...Running hooks...

Update the current branch to latest remote

brave-core> git pull
brave-core> npm run sync
...Updating 2 patches...
...Updating child dependencies...
...Running hooks...

Reset to latest brave-browser master, brave-core master and chromium

brave-browser> git checkout master
brave-browser> git pull
brave-browser> npm run sync -- --init

When you know that DEPS didn't change, but .patch files did (quickest)

brave-core> git checkout featureB
brave-core> git pull
brave-browser> npm run apply_patches
...Applying 2 patches...

Enabling third-party APIs:

  1. Google Safe Browsing: Get an API key with SafeBrowsing API enabled from Update the
    environment variable with your key as per to enable Google SafeBrowsing.


See Troubleshooting for solutions to common problems.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.