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.
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.
Supported Rule Mappings
This tool maps 122 ESLint rules to their Biome equivalents across core, TypeScript, React, JSX-A11y, and import plugins.
| Category | Rules |
|---|---|
| suspicious | 32 rules |
| correctness | 30 rules |
| a11y | 27 rules |
| style | 17 rules |
| complexity | 13 rules |
| security | 2 rules |
| performance | 1 rules |
| Total | 122 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
TOML ↔ JSON/YAML
Convert between TOML, JSON, and YAML — perfect for Cargo.toml and pyproject.toml
Encode / Decode Multi-Tool
Base64, Base32, Hex, Binary, URL, and HTML encoding & decoding all in one tool
HTML to JSX Converter
Convert HTML to JSX instantly — class to className, inline styles to objects, self-closing tags, SVG attributes, event handlers, and more
JSON to Code Generator
Generate typed code from JSON in 8 languages — Go, Python, Java, C#, Dart, Rust, Swift, Kotlin structs and classes