DevBolt
Processed in your browser. Your data never leaves your device.

Biome vs ESLint: Complete Comparison

Biome and ESLint take fundamentally different approaches to JavaScript/TypeScript linting. This comparison covers performance, rule coverage, formatting, ecosystem, and when to choose each tool.

← Back to tools

ESLint to Biome Converter

Convert your .eslintrc config to biome.json. Supports rule mapping for core ESLint, TypeScript, React, JSX-A11y, and import plugins. Extracts formatter settings from formatting rules.

Samples:
Ctrl+Enter to convert

Supported Rule Mappings

This tool maps 122 ESLint rules to their Biome equivalents across core, TypeScript, React, JSX-A11y, and import plugins.

CategoryRules
suspicious32 rules
correctness30 rules
a11y27 rules
style17 rules
complexity13 rules
security2 rules
performance1 rules
Total122 rules

Performance

Biome is written in Rust and processes files in parallel, making it 20-100x faster than ESLint on large codebases. A project with 10,000 TypeScript files that takes ESLint 45 seconds to lint finishes in under 1 second with Biome. This difference is transformative for CI pipelines and developer experience. ESLint 9 improved performance with flat config, but the architecture limits further gains.

Rule coverage

ESLint has the largest rule ecosystem through plugins — thousands of rules across hundreds of plugins. Biome implements 200+ built-in rules covering core ESLint, TypeScript-ESLint, React, React Hooks, JSX-A11y, import, and Unicorn rules. Biome v2 added type-aware rules (previously only available in TypeScript-ESLint). For most projects, Biome covers 85-95% of the rules actually enabled.

Formatting

Biome includes a built-in formatter that is 97% compatible with Prettier output. This eliminates the need for Prettier, eslint-config-prettier, and the conflicts between linting and formatting. ESLint deprecated its built-in formatting rules and recommends using Prettier separately, adding configuration complexity.

Configuration

Biome uses a single biome.json file for linting, formatting, and import sorting. ESLint requires .eslintrc.* for linting, .prettierrc for formatting, and plugin configs for import sorting. ESLint 9 introduced flat config (eslint.config.js), which is simpler than the legacy format but still requires separate Prettier config.

Ecosystem and plugins

ESLint wins on ecosystem breadth — plugins exist for nearly every framework and pattern. Biome has no plugin system yet, but its built-in rules cover the most widely-used plugins. If you depend on niche ESLint plugins (eslint-plugin-testing-library, eslint-plugin-tailwindcss), you may need to keep ESLint for those specific rules.

Frequently Asked Questions

Should I switch from ESLint to Biome in 2026?

If you use a standard stack (TypeScript, React, Next.js), Biome covers most of your rules and is dramatically faster. If you rely on niche ESLint plugins with no Biome equivalent, you may want to wait or run both tools.

Does Biome support ESLint flat config?

Biome does not read eslint.config.js directly. You need to convert your config to biome.json format. This converter tool handles legacy .eslintrc configs — flat config support requires manual conversion of the rule objects.

Is Biome compatible with Prettier?

Biome's formatter is designed to produce output nearly identical to Prettier. You can use Biome as a drop-in Prettier replacement. There are minor formatting differences in edge cases, but they are rare.

Related Convert Tools