<!-- PkgPulse AI-readable guide source -->
<!-- Canonical: https://www.pkgpulse.com/guides/biome-vs-oxc-2026 -->
<!-- Raw Markdown: https://www.pkgpulse.com/guides/biome-vs-oxc-2026/raw.md -->
<!-- Source path: content/guides/biome-vs-oxc-2026.mdx -->

---
og_image: "/images/guides/biome-vs-oxc-2026.webp"
title: "Biome vs OXC 2026: Linter Showdown"
description: "Biome vs OXC 2026: Oxlint is 2x faster at linting, Oxfmt 3x faster at formatting — but Biome has more rules and better DX. Here's when to choose each."
date: "2026-03-21"
author: "PkgPulse Team"
tags: ["linting", "biome", "oxc", "formatting"]
---

# Biome vs OXC 2026: Linter Showdown

## TL;DR

Both Biome and OXC (Oxlint + Oxfmt) are Rust-based JavaScript toolchain projects — and in 2026, both are production-ready for linting. **Biome wins on features and DX**: it's a complete all-in-one linter + formatter with ~200 lint rules, no config required, and excellent editor integration. **OXC wins on raw speed**: Oxlint runs 2x faster than Biome for linting and Oxfmt runs 3x faster for formatting. The practical recommendation: use Biome for greenfield projects; add Oxlint alongside ESLint for existing codebases where ESLint is too slow.

## Key Takeaways

- **Oxlint is 2x faster than Biome** for linting and 50-100x faster than ESLint — OXC holds the benchmark crown
- **Biome has ~200 lint rules**; Oxlint has ~300 rules — both cover correctness and best practices, but Biome's rules are more curated
- **Oxfmt (OXC's formatter) is 3x faster than Biome and 35x faster than Prettier** — beta as of February 2026, but maturing fast
- **Biome formats JavaScript, TypeScript, JSON, CSS, GraphQL** — Oxfmt supports the same plus YAML, TOML, HTML, Vue, Angular, Markdown, and MDX
- **Biome works today as a zero-config drop-in** for ESLint + Prettier; OXC requires separate tools (Oxlint + Oxfmt) that are at different maturity levels
- **The VoidZero team** (behind Vite, Rolldown, Oxc) is aggressively pushing OXC's roadmap — Q1 2026 includes Oxlint JS Plugins Alpha and Formatter Beta
- **Neither replaces ESLint entirely** — OXC explicitly positions as complementary; Biome is the more direct alternative

---

## What Are Biome and OXC?

These are both Rust-based JavaScript tooling projects, but they have different origins and philosophies.

**Biome** is a fork of Rome (Meta's abandoned JavaScript toolchain project), maintained by an independent open-source community. It ships as a single binary: one tool that handles linting, formatting, and imports organization for JavaScript, TypeScript, JSON, and CSS. The philosophy is simplicity — one config, one tool, replace ESLint + Prettier in a single install.

**OXC** (Oxc Project) is a collection of JavaScript/TypeScript tools from VoidZero (the company behind Vite). Rather than one monolithic tool, OXC ships individual components: Oxlint (linter), Oxfmt (formatter), the Oxc parser (used internally by Vite 8, Rolldown, and OXC tools), and the Oxc transformer. Each can be used independently.

---

## Performance Comparison

Speed is where OXC dominates. The benchmark numbers are striking:

| Tool | Linting Speed | Formatting Speed |
|------|--------------|-----------------|
| ESLint | baseline | — |
| Prettier | — | baseline |
| Biome | ~10x faster than ESLint | ~20x faster than Prettier |
| Oxlint | ~50-100x faster than ESLint | — |
| Oxfmt | — | ~35x faster than Prettier, 3x faster than Biome |

**Oxlint vs Biome linting** (bench-linter, OXC's public benchmark repo):
- Oxlint is approximately **2x faster than Biome** on equivalent codebases
- Both are dramatically faster than ESLint

**Oxfmt vs Biome formatting** (oxc-project/bench-formatter):
- Oxfmt is **3x faster than Biome** and **35x faster than Prettier** on initial runs (without cache)
- With caching, both Biome and Oxfmt improve, but Oxfmt retains the lead

For most projects, these performance differences are academic — both tools are so fast that linting and formatting aren't bottlenecks. The difference matters at scale: monorepos with 10,000+ files, CI pipelines where linting takes minutes, or large teams where developer iteration speed adds up.

---

## Feature Comparison: Rules and Coverage

### Lint Rules

| | Biome | Oxlint |
|---|---|---|
| Rule count (2026) | ~200 | ~300 |
| ESLint rule coverage | Partial | ~80% |
| Custom rules (plugins) | ✅ Supported | ⚠️ Alpha (JS Plugins) |
| Auto-fix | ✅ Yes | ✅ Yes |
| TypeScript rules | ✅ Yes | ✅ Yes |
| React rules | ✅ Yes (JSX) | ✅ Yes |

Oxlint has more rules in total but focuses heavily on ESLint compatibility — it prioritizes covering the most commonly used ESLint rules so teams can drop ESLint without losing coverage.

Biome's rules are more opinionated and curated. The team carefully reviews each rule for DX impact — they'd rather ship fewer, better rules than maximize rule count. Biome also provides a `biome migrate eslint` command that converts your ESLint config to Biome equivalents.

### Formatting

Biome's formatter has been production-ready since 2023. It's Prettier-compatible for JavaScript and TypeScript, with some intentional deviations documented.

Oxfmt entered beta in February 2026. Key characteristics:

- **Prettier-compatible** output (same as Biome's goal)
- **Broader language support**: YAML, TOML, HTML, Vue, Angular, Svelte, Markdown, MDX, GraphQL — more than Biome
- **3x faster than Biome** on benchmarks
- **Not yet stable** — the beta warning applies; breaking changes possible before 1.0

For teams that need YAML, TOML, or HTML formatting in the same tool, Oxfmt's breadth is compelling. For teams that need stability today, Biome is the choice.

---

## Developer Experience

### Setup and Config

**Biome:**
```bash
npm install --save-dev @biomejs/biome
npx @biomejs/biome init
```

That's it. The `biome.json` generated works immediately with sensible defaults. No plugin config, no shareable configs to manage:

```json
{
  "$schema": "https://biomejs.dev/schemas/1.9.0/schema.json",
  "organizeImports": { "enabled": true },
  "linter": { "enabled": true, "rules": { "recommended": true } },
  "formatter": { "enabled": true, "indentStyle": "tab" }
}
```

**Oxlint:**
```bash
npm install --save-dev oxlint
npx oxlint
```

Oxlint also works zero-config. But since Oxfmt is separate:
```bash
npm install --save-dev oxfmt
npx oxfmt .
```

Two tools to manage instead of one — not complex, but more moving parts.

### Editor Integration

**Biome** has first-class VS Code, Neovim, and WebStorm extensions. The VS Code extension is actively maintained and supports auto-fix on save, format on save, inline diagnostics.

**Oxlint** has VS Code extension support but less mature tooling than Biome. Oxfmt is newer and editor integration is still developing.

### Migrating from ESLint + Prettier

**Biome** has a dedicated migration command:
```bash
npx @biomejs/biome migrate eslint --write
npx @biomejs/biome migrate prettier --write
```

This automatically converts `.eslintrc` and `.prettierrc` to equivalent `biome.json` config. The migration covers most common rules; complex plugin-heavy configs need manual review.

**OXC** takes a different approach — it's designed to run *alongside* ESLint, not replace it:
```bash
# Run Oxlint for fast feedback, ESLint for remaining rules
npx oxlint && npx eslint
```

This dual-linting pattern is common in large codebases: Oxlint catches 80% of common mistakes in milliseconds, then ESLint fills in the gaps. It's not a migration — it's an augmentation.

---

## The VoidZero Factor

OXC is backed by VoidZero, the company that also maintains Vite and Rolldown. This matters for the ecosystem trajectory.

The OXC parser is already embedded in Vite 8's React plugin (for Fast Refresh transforms) and in Rolldown's transform pipeline. As VoidZero ships more of the JavaScript toolchain in Rust, OXC tools become the natural fit — same parser, same AST, zero duplication.

The Q1 2026 OXC roadmap includes:
- **Oxlint JS Plugins Alpha** — write custom lint rules in JavaScript (previously Rust-only)
- **Formatter Beta** — Oxfmt stable-track release
- **Minifier Beta** — Oxc minifier as alternative to Terser/esbuild minifier
- **Transformer Milestone 3** — completing TypeScript transform coverage

By end of 2026, OXC could plausibly be a complete toolchain: parse, lint, format, minify, and transform — all in one Rust runtime, tightly integrated with Vite.

---

## When to Use Biome

- **Greenfield TypeScript/JavaScript projects** — zero-config, one install, covers 90% of teams' needs
- **Teams leaving ESLint + Prettier** — migration tooling makes it seamless
- **Projects needing stable formatter today** — Biome's formatter is production-tested and stable
- **Projects where DX matters more than maximum speed** — better editor integration, more curated rules
- **Next.js, React, Vue projects** — well-supported, documented, community examples

```bash
# Add to existing project
npm install -D @biomejs/biome
npx @biomejs/biome init
npx @biomejs/biome migrate eslint --write
npx @biomejs/biome migrate prettier --write
```

## When to Use OXC (Oxlint)

- **Large codebases where ESLint is slow** — run Oxlint as a pre-check before ESLint
- **CI pipelines where linting is a bottleneck** — Oxlint's speed compounds on large repos
- **Teams not ready to migrate from ESLint** — use Oxlint as an additive layer
- **Projects on the Vite 8 ecosystem** — OXC's deep integration with VoidZero's toolchain
- **Forward-looking stacks** — if you want to bet on VoidZero's toolchain consolidation

```bash
# Add Oxlint to existing ESLint project (no migration required)
npm install -D oxlint
# Add to package.json scripts
# "lint": "oxlint && eslint ."
```

---

## Methodology

- Performance benchmarks from oxc-project/bench-linter and oxc-project/bench-formatter (GitHub)
- Rule counts from official documentation: biomejs.dev/linter/rules and oxc.rs/docs/guide/benchmarks
- Oxfmt beta announcement and feature list from oxc.rs/blog/2026-02-24-oxfmt-beta
- OXC Q1 2026 roadmap from oxc.rs project GitHub

---

*Related: [OXC vs ESLint vs Biome: JS Linting 2026](/guides/oxc-vs-eslint-vs-biome-javascript-linting-2026) · [Biome Faster than ESLint + Prettier](/guides/biome-faster-eslint-prettier-replacement) · [Rolldown vs esbuild: Rust Bundler 2026](/guides/rolldown-vs-esbuild-rust-bundler-2026). See [all linting and formatting packages](/packages) on PkgPulse.*
