Bazel
Google’s open-source build and test system for large, multi-language repositories: every input is declared, every step runs sandboxed, and results are reused from a cache or built on remote machines.
- What it is
- Build tools
- Type
- Open source
- Made by
- License
- Apache 2.0
- Facts checked
- 28 October 2026
What it is
Bazel is the open-source version of Blaze, the build system Google uses for its own monorepo. A repository is split into packages, each with a BUILD.bazel file that declares targets such as cc_library, java_binary or py_test, their sources and the other targets they depend on, addressed by labels like //services/orders:server. Rules and macros are written in Starlark, a small, deterministic dialect of Python. From those files Bazel builds a graph of actions (compile this file, link that binary, run this test), hashes each action’s inputs and command line, and runs only the actions whose hash it hasn’t seen, side by side and in a sandbox that hides undeclared files. Because outputs depend only on declared inputs, they can be shared: a disk cache on one machine, a remote cache for the whole team and CI, or remote execution, where a cluster runs the actions through the open Remote Execution API, offered by services and servers such as BuildBuddy, EngFlow and Buildbarn.
External dependencies are Bazel modules (Bzlmod): MODULE.bazel lists them by name and version, usually from the Bazel Central Registry, and Bazel resolves one version of each. Bazel 9.0, a long-term support release from January 20, 2026, removed the old WORKSPACE system entirely and moved the last built-in language rules, for C++, into the separate rules_cc module, so every language is now a module you load. Each major version is an LTS release: in October 2026, 9.3 was active and supported until December 2028, 8.x and 7.x were in maintenance, and Bazel 10 was in release candidates. The core is written in Java and led by Google. Since October 2026 the Linux Foundation’s BUILD Foundation has funded documentation, community rule maintainers and other ecosystem work, but Google still governs the core.
Why teams pick it
- Correct incremental builds: declared inputs and sandboxing mean a cached result is safe to reuse, locally or from a shared remote cache
- Scales to very large monorepos and test suites by running actions on remote workers through an open API with several commercial and self-hosted back ends
- One tool and one graph for many languages (C++, Java, Go, Python, JavaScript and more), with
bazel queryto ask what depends on what - Predictable upgrades: each major version is supported for years, with a published end-of-support date
Watch out for
- A steep start: every dependency has to be declared in BUILD files, and code that relies on whatever is installed on the machine must be fixed before it builds hermetically
- Upgrades can be large: Bazel 9 removed
WORKSPACE, so repositories that hadn’t moved to Bzlmod must migrate before upgrading, and built-in rules now have to be loaded from their modules - Ecosystem gaps: the BUILD Foundation’s first priorities, taken from the 2025 Bazel User Survey, are documentation, IDE integration and paying maintainers of community rules
- Google decides the direction of the core; outside companies can fund the ecosystem through the BUILD Foundation but don’t govern Bazel itself
Alternatives
What all build tools have in common →Compare side by side →How it fits with other technologies
A module, three targets, cached tests and a dependency query · bash
cat > MODULE.bazel <<'EOF'
module(name = "orders")
bazel_dep(name = "rules_cc", version = "0.2.27") # from the Bazel Central Registry
EOF
cat > BUILD.bazel <<'EOF'
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
cc_library(name = "pricing", srcs = ["pricing.cc"], hdrs = ["pricing.h"])
cc_binary(name = "orders", srcs = ["main.cc"], deps = [":pricing"])
cc_test(name = "pricing_test", srcs = ["pricing_test.cc"], deps = [":pricing"])
EOF
bazel build //:orders # builds pricing, then orders, each step sandboxed
bazel test //... # a second run reports unchanged tests as (cached) PASSED
bazel query 'rdeps(//..., //:pricing)' # everything that depends on pricing
bazel test //... --remote_cache=grpcs://cache.example.com # share results with the team and CIWho runs Bazel#
Bazel is a Google project. Its contribution policy says it “is led and managed by Google”: the Google Bazel team owns strategy, maintenance and leadership, reviews which community repositories join the bazelbuild GitHub organisation, and appoints maintainers for areas of code. Much of the ecosystem lives elsewhere, in the community-run bazel-contrib organisation and in the Bazel Central Registry, where rulesets, libraries and tools are published by their own maintainers.
The BUILD Foundation, a directed fund of the Linux Foundation, was announced at BazelCon 2025 and began operating on October 14, 2026, with ASML, Canva, Datadog, EngFlow, Figma and Spotify as its first members. The Bazel team described the split in April 2026: Google “maintains governance of the core Bazel ‘kernel’”, while the fund pays for documentation, rulesets and open-source infrastructure. It does not own Bazel’s code or name, so the catalog doesn’t list Bazel as one of its projects.
See it in a real stack
No architecture uses Bazel yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2006–2026
Google began building Blaze in 2006 to build and test its huge monorepo quickly and correctly. In March 2015 it released an open-source port as Bazel, which reached beta that September and 1.0 on October 10, 2019. Companies outside Google adopted it for the same problem, among them Spotify, Stripe and Uber, and others built commercial remote execution services on its open API.
From Bazel 4.0 every major version became a long-term support release. Bzlmod, a module system to replace the WORKSPACE file, was introduced in 2021; Bazel 8.0 disabled WORKSPACE by default, and Bazel 9.0 (January 2026) removed it and finished moving the language rules out of the core into Starlark modules.
At BazelCon 2024 members of the community proposed a non-Google Bazel foundation as a “backup plan” should Google ever withdraw from the project. At BazelCon 2025 in Atlanta Google stressed its commitment to Bazel, and the BUILD Foundation was announced; it was set up as a Linux Foundation directed fund and began operating at BazelCon 2026 in Amsterdam on October 14, 2026, where Google also said it was evaluating a gradual rewrite of Bazel in Rust.
Why it’s built this way
- Declare every input and sandbox every action
- If an action can only see what it declares, its output depends only on those inputs, which is what makes caching and remote execution safe across machines.
- A restricted Python dialect for build logic
- Starlark looks like Python but has no file or network access and runs deterministically, so build files can be evaluated in parallel and their results cached.
- Move language rules out of the core
- Shipping C++, Java and other rules as separate modules lets each be released and fixed on its own schedule, leaving Bazel itself a smaller, language-neutral engine.
- Fund the ecosystem, keep core governance at Google
- The BUILD Foundation gives users a formal way to pay for documentation, rules and tooling that no single company would fund, without changing who decides the direction of Bazel’s core.
Timeline
- 2006
Google starts building Blaze
- 2015
Open-sourced as Bazel in March; beta in September
- 2019
Bazel 1.0 on October 10
- 2025
BUILD Foundation announced at BazelCon in Atlanta
- 2026
Bazel 9.0 LTS removes WORKSPACE in January; BUILD Foundation starts operating on October 14
- Wikipedia: Bazel (software) (Blaze 2006, first release March 2015)
- Bazel blog: Bazel is in beta (September 2015)
- Bazel blog: Bazel 1.0 (October 10, 2019)
- Bazel docs: Who’s using Bazel (Spotify, Stripe, Uber and others)
- Bazel docs: Remote execution services
- Bazel docs: Release model (LTS releases from Bazel 4.0)
- Bazel blog: Bazel 9 LTS (January 20, 2026; Bzlmod since 2021, WORKSPACE disabled in 8.0 and removed in 9.0)
- Julio Merino: BazelCon 2025 recap (Google’s commitment; foundation proposed as a backup plan)
- Bazel blog: Q1 2026 community update (BUILD Foundation announced at BazelCon 2025, a Linux Foundation directed fund)
- Linux Foundation: Linux Foundation launches BUILD Foundation (October 14, 2026)
- Julio Merino: BazelCon 2026 recap (Rust rewrite evaluation, BUILD Foundation)
Sources13 · facts checked 28 October 2026
- Bazel docs: Intro to Bazel
- Bazel docs: Starlark language
- Bazel docs: External dependencies overview (Bzlmod, MODULE.bazel, registries)
- Bazel Central Registry
- Bazel docs: Remote execution overview (open gRPC protocol for remote execution and caching)
- Bazel docs: Remote execution services (BuildBuddy, EngFlow, Buildbarn and others)
- Bazel docs: Release model (LTS tracks and end-of-support dates)
- Bazel blog: Bazel 9 LTS (WORKSPACE removed, C++ rules moved to rules_cc)
- Bazel docs: Contribution policy (“led and managed by Google”; owners and maintainers)
- Bazel blog: Q1 2026 community update (Google keeps governance of the core “kernel”)
- Linux Foundation: Linux Foundation launches BUILD Foundation (October 14, 2026; members and priorities)
- Bazel docs: Who’s using Bazel (Spotify, Stripe, Uber and others)
- GitHub: bazelbuild/bazel releases (9.3.1 and 10.0.0rc2, October 2026; Apache 2.0)