Skip to content
JavaScript tooling

Biome vs ESLint in 2026

Biome vs ESLint is a choice between one fast tool and a large ecosystem. Biome is a single Rust toolchain that formats and lints JavaScript, TypeScript, JSON, CSS and more, with 791 lint rules as of November 12, 2026, and no config needed to start. ESLint is the pluggable JavaScript linter: every rule is a plugin, typescript-eslint adds TypeScript, and you pair it with a formatter such as Prettier.

Facts and prices checked on against the sources listed below.

Quick verdict

Biome logo

Biome

PriceFree, open source

Pick Biome if you want one dependency for formatting and linting, fast CI and editor runs, and your project does not lean on niche ESLint plugins.

ESLint

PriceFree, open source

Pick ESLint if you depend on framework or company plugins, write custom rules, or need deep type-aware linting through typescript-eslint.

Biome vs ESLint at a glance

Biome vs ESLint, checked October 23, 2026
FeatureBiome logoBiomeESLint
What it isFormatter and linter in one toolchain, written in RustPluggable linter for JavaScript; formatting is left to other tools
Lint rules791 rules as of Nov 12, 2026, many taken from ESLint and typescript-eslintCore rules plus any plugin; every rule is a plugin
FormattingBuilt in; Biome reports 97% Prettier compatibilityNot its job: pair it with Prettier or another formatter
LanguagesJS, TS, JSX, JSON, HTML, CSS, SCSS, GraphQL, YAML, MarkdownJavaScript; TypeScript through typescript-eslint; JSON and Markdown through official plugins
PluginsJavaScript plugins since v2.6, plus GritQL pluginsLarge ecosystem of plugins, parsers and shareable configs
Configbiome.json, zero config to starteslint.config.js (flat config)
Latest release2.6.2 (21 Oct 2026)10.13.0 (16 Oct 2026); 9.39 is the maintenance line
License and starsMIT and Apache-2.0, 26.0k starsMIT, 27.6k stars
Free tierFree and open source, no paid planFree and open source, no paid plan
Diagram: a typical ESLint setup uses ESLint, typescript-eslint, plugins and Prettier as separate packages, while Biome formats and lints in one binary
What runs in each setup. Drawn by TeaserTrack from the Biome and ESLint docs.

One toolchain or a linter plus a formatter

A typical ESLint setup is several packages that work together: ESLint itself, typescript-eslint for TypeScript, plugins for your framework, and Prettier for formatting, each with its own config. Biome replaces the linter and the formatter with one binary and one biome.json. The biome check command runs both at once.

That is the real trade. Biome gives you fewer moving parts and one fast pass. ESLint gives you the ecosystem: if a rule exists for your framework, your test runner or your company style, it is almost certainly an ESLint plugin.

Rules and plugins

As of November 12, 2026, biomejs.dev lists 791 lint rules, many of them taken from ESLint, typescript-eslint and other sources, in eight groups such as Correctness, Suspicious, Style and Accessibility. Rules for a technology, such as React or tests, live in "domains" that Biome can switch on from your package.json dependencies. New rules start in a Nursery group that you opt into.

ESLint is built around plugins: its docs say every rule is a plugin, and you can add more at runtime. Plugins also add parsers and whole languages, such as JSON through @eslint/json. Biome added JavaScript plugins in version 2.6, alongside its GritQL plugins, but the catalogue is far smaller than ESLint's today.

Type-aware linting

ESLint gets type information through typescript-eslint, which runs the TypeScript compiler. Biome has its own Scanner: when you enable a rule that needs types, such as noFloatingPromises, it builds a module graph and infers types, including from .d.ts files in node_modules. The Biome docs say this is opt-in, can raise memory use, and in their example takes a 2,000 file project from about 800 ms to about 2 s.

Formatting

ESLint is a linter; formatting is left to tools such as Prettier. Biome includes a formatter that it says scores 97% compatibility with Prettier, and it formats JavaScript, TypeScript, JSON, HTML, CSS, SCSS, GraphQL, YAML and Markdown. If you switch, expect a small diff the first time you format.

Moving from ESLint to Biome

Biome has migration commands: npx biome migrate eslint --write reads your ESLint config (flat or legacy, following extends) and npx biome migrate prettier --write copies your Prettier options. By default only rules that match exactly are migrated; --include-inspired adds rules that are only similar.

The Biome docs list the limits plainly. The result "does not behave exactly like ESLint", rules from ESLint plugins must be set in biome.json by hand, and Biome only skips files in .gitignore once you turn on its VCS integration. A safe path is to run both tools in CI for a week and compare.

When to pick Biome

  • You want one tool for formatting and linting, with one config file.
  • Speed in CI and in the editor matters to you.
  • You use mainstream rules, not niche ESLint plugins.

When to pick ESLint

  • You rely on framework, testing or in-house ESLint plugins.
  • You write custom lint rules for your team.
  • You want the widest type-aware rule set through typescript-eslint.

This page is based on the official Biome and ESLint documentation and release pages, not on our own benchmarks.

FAQ

Is Biome faster than ESLint?

Biome is built in Rust and runs formatting and linting in one pass. Its own benchmark says it formats about 35 times faster than Prettier on a 171,127 line codebase. It does not publish a linter benchmark against ESLint, so measure on your own repo before you switch for speed alone.

Can Biome replace ESLint and Prettier?

For many projects, yes: Biome formats and lints in one tool, and biome migrate eslint and biome migrate prettier convert your configs. Its docs say the migrated result does not behave exactly like ESLint, and rules from ESLint plugins must be set by hand, so check what you lose first.

Does Biome support type-aware rules?

Some. Rules such as noFloatingPromises use the Biome Scanner, which builds a module graph and infers types, including from .d.ts files in node_modules. It is opt-in and uses more memory. typescript-eslint with ESLint still covers more type-aware rules.

Which Node.js version does ESLint need?

The ESLint getting started guide asks for Node.js ^20.19.0, ^22.13.0 or 24 and later. Biome ships as a standalone binary through npm and other package managers.

Sources, checked October 23, 2026

Prices and plans change often. If something here is out of date, tell us through the contact page.