Oxc

A collection of high-performance JavaScript and TypeScript tools written in Rust — parser, linter (oxlint), resolver, transformer, and minifier.

Screenshot of Oxc

Oxc (the Oxidation Compiler) is a suite of high-performance JavaScript and TypeScript tooling built from the ground up in Rust. Rather than wrapping or porting existing JavaScript tools, Oxc reimplements the entire toolchain — parser, linter, resolver, transformer, minifier — with correctness and raw speed as primary goals. Individual components are usable as standalone CLI tools or as Rust/Node.js libraries.

Components

  • Parser — a spec-compliant, error-recovering ECMAScript and TypeScript parser; the fastest available for JavaScript
  • oxlint — a standalone linter with over 400 rules, compatible with ESLint rule naming, running 50–100× faster than ESLint
  • Resolver — an enhanced-resolve-compatible module resolver used internally and by other tools
  • Transformer — a Babel-compatible AST transformer for downlevelling and syntax transforms
  • Minifier — a JavaScript minifier (in development) aiming to match or beat Terser in output size

Features

  • Extreme speed — the parser processes millions of lines per second; oxlint lints large codebases in milliseconds
  • Drop-in ESLint compatibility — oxlint understands ESLint's rule naming convention; existing // eslint-disable comments are respected
  • TypeScript-first — parses TypeScript natively, no preprocessing required
  • Accurate error recovery — the parser continues after syntax errors, giving you a full picture of all issues at once
  • Zero configuration neededoxlint works out of the box with sensible defaults, no config file required
  • Library-quality APIs — all components are designed for use as libraries in Rust or via Node.js bindings

Installation

oxlint (the linter)

# via npm/npx (no install needed)
npx oxlint@latest .

# install globally via npm
npm install -g oxlint

# via cargo
cargo install oxc_cli

On Debian, Ubuntu, Fedora, and other Linux distros, the npm install and npx methods above work without any additional setup — just ensure Node.js is installed.

Rust library

cargo add oxc

Usage

oxlint

# Lint the current directory
oxlint .

# Lint specific files or directories
oxlint src/

# Enable specific rule categories
oxlint --deny correctness --deny suspicious src/

# Run with all rules enabled
oxlint --all src/

# Fix auto-fixable issues
oxlint --fix src/

# Output as JSON (for CI tooling)
oxlint --format json src/

Using the parser as a library (Rust)

use oxc_allocator::Allocator;
use oxc_parser::Parser;
use oxc_span::SourceType;

let allocator = Allocator::default();
let source = "const x: number = 42;";
let source_type = SourceType::ts();
let ret = Parser::new(&allocator, source, source_type).parse();

println!("AST: {:?}", ret.program);
if !ret.errors.is_empty() {
    println!("Errors: {:?}", ret.errors);
}

oxlint vs ESLint

FeatureESLintoxlint
SpeedBaseline50–100× faster
LanguageJavaScriptRust
Rules200+ core + ecosystem400+ built-in
Config requiredYes (eslint.config.js)No (works out of the box)
ESLint disable comments✅ Compatible
Plugin ecosystemVastGrowing
TypeScript supportVia pluginNative

oxlint is not intended to fully replace ESLint — particularly for projects heavily reliant on community plugins like eslint-plugin-react or eslint-plugin-vue. The recommended approach is to run oxlint first (for speed) and ESLint second (for plugin-specific rules), which cuts the overall lint time dramatically since oxlint handles the majority of rules.

Integration with other Oxc tools

Oxc's components are designed to compose. The same parser is used by the linter, the transformer, and the minifier — meaning improvements to the parser benefit the entire toolchain simultaneously. Projects like Rolldown use Oxc's parser and resolver internally.

Status

Oxc is under active development. The parser and oxlint are production-ready and widely used. The transformer and minifier are in active development and approaching stability. Check the project roadmap for the current status of each component.