Favicon of Biome

Biome

Biome is a Rust-built formatter and linter for web projects, with 500+ lint rules and 97% Prettier compatibility.

Open Source Alternative to:
Biome website screenshot
Biome GitHub repository preview

Biome is a toolchain for web projects written in Rust. It combines a formatter and a linter into one tool, aimed at developers who want fast, consistent code formatting and static analysis without stitching together separate tools like Prettier and ESLint.

It works on JavaScript, TypeScript, JSX, JSON, CSS, and GraphQL. Biome markets itself around performance and compatibility: it claims 97% compatibility with Prettier's formatting output and ships with more than 500 lint rules pulled from ESLint, typescript-eslint, and other sources. It's built to run interactively inside an editor, formatting and linting code as you type, and it exposes first-class LSP support.

Key features

  • Formatter: fast, opinionated code formatting with high compatibility with Prettier's output across supported languages.
  • Linter: 500+ rules covering common JS/TS/CSS/GraphQL issues, with detailed, contextualized diagnostics rather than terse error codes.
  • Unified toolchain: formatter, linter, and other checks share a parser, error reporting, caching, and configuration, instead of running as separate disconnected tools.
  • No Node.js dependency: Biome doesn't require Node.js to run, even though it's commonly installed via npm.
  • Editor integration: first-party extensions and LSP support let it lint and format as you write code.
  • Sane defaults: works with little to no configuration out of the box.
  • CI mode: a dedicated ci command checks formatting and linting without writing changes, suited for pipelines.
  • WebAssembly playground: an online playground lets you try Biome without installing anything.

Ideal use cases

Biome fits projects that currently run separate formatter and linter tools (like Prettier plus ESLint) and want to consolidate into one faster toolchain with a single config file. It's a good match for teams that value speed, since it's built in Rust and benchmarks itself against JS-based alternatives.

It also suits projects where CI check time matters, teams that want a single dependency to manage instead of a chain of plugins, and setups where minimal Node.js dependency is a plus (Biome can run without Node).

It's not a good fit if you need deep, highly customized ESLint plugin ecosystems that Biome hasn't reimplemented, or if your project's linting relies on niche rules or frameworks not yet covered by Biome's rule set. Projects requiring 100% pixel-identical Prettier output for every edge case may also hit gaps, since Biome states 97% compatibility, not 100%.

Installation

Install Biome as a dev dependency via npm:

npm install --save-dev --save-exact @biomejs/biome

Then run it through npx:

# format files
npx @biomejs/biome format --write

# lint files and apply the safe fixes
npx @biomejs/biome lint --write

# run format, lint, etc. and apply the safe fixes
npx @biomejs/biome check --write

# check all files against format, lint, etc. in CI environments
npx @biomejs/biome ci

You can also try Biome without installing anything, using the online playground compiled to WebAssembly. Biome doesn't strictly require Node.js to function; a manual installation path exists for environments without it. Editor extensions are available as first-party integrations for interactive formatting and linting while you write code.

Frequently asked questions

Share:

Stars
25.4K
Forks
1.2K
Last commit
9 hours ago
Repository age
3 years
License
Apache-2.0
Self-hosted
No
Activity score
82/100
View Repository
Ad
Favicon

 

  
 

Similar to Biome

Favicon

 

  
 
Favicon

 

  
 
Favicon