Ultracite

Ultracite

Hayden Bleasel · Coding

Ultracite is a free, zero-config linter and code formatter preset for JavaScript and TypeScript. It plugs into Biome, Oxlint, or ESLint and gives AI coding agents the same rules your team follows.

Interface preview of Ultracite

About Ultracite

What Is Ultracite

Ultracite is a preset for code quality tools. It doesn't lint or format code on its own. Instead, it sits on top of an engine you already know, like Biome, Oxlint, or ESLint, and hands it a curated set of rules that most JavaScript and TypeScript projects end up wanting anyway. Hayden Bleasel, the maintainer, ships it as an open-source project under the MIT license, so there's nothing to buy and nothing to license.

The problem it solves is setup. A fresh project usually means days of copying config from an old repo, arguing about quote styles, and wiring the same settings into every new app. Ultracite compresses that into npx ultracite init, which writes the config, connects your editor, and finishes in seconds. Type safety gets attention too: setup turns on strict null checks in tsconfig.json unless you already handle that yourself.

The main limit is its stance on convention. Ultracite is opinionated on purpose, so if you like tuning every single rule by hand, it can feel tight. The upside is that you stop maintaining a config file and start shipping code.

Getting Started

  1. Open a terminal in your project folder and run npx ultracite init. The setup walks you through choosing a formatter and linter, your framework, editor, and AI agents.
  2. Pick your toolchain when asked: Oxlint with Oxfmt for speed, Biome for an all-in-one binary, or ESLint with Prettier and Stylelint if you depend on specific plugins.
  3. Let the installer write the config files and update package.json. It removes conflicting ESLint and Prettier configs automatically when they'd clash.
  4. Run ultracite check to see issues without changing files, then ultracite fix to apply safe, automatic corrections.
  5. Save a file in your editor to watch formatting and fixes run on the spot, then commit with confidence.

Product Information

A quick look at Ultracite's pricing, supported platforms, and performance.

Free PlanYes
Paid Plans$0
PlatformCommand line, VS Code, Cursor, Windsurf, Zed, CI pipelines
DeveloperHayden Bleasel
CategoryCoding
Release DateNov 2024
Latest UpdatedOct 2025
Website VisitsN/A
Website Global RankN/A
API AvailabilityNo

Best for

The users, tasks, and scenarios where this tool fits best.

Users

  • JavaScript and TypeScript developers
  • Teams onboarding new hires
  • Developers using AI coding assistants

Tasks

  • Cleaning up a messy repo
  • Keeping a monorepo consistent
  • Enforcing style before commits
  • Handing hard fixes to an AI agent

Scenarios

  • Kicking off a brand new project and wanting solid defaults without reading ten config docs.
  • Migrating from a legacy ESLint and Prettier setup and wanting a cleaner starting point.
  • Running checks in CI on a large codebase where subsecond speed matters.
  • Working on CSS and JSON files alongside TypeScript and wanting one toolchain to cover them.

Key features

Zero-Config Setup

A single command, npx ultracite init, wires up your chosen linter and formatter, editor settings, and AI agent rules. You answer a few prompts and the installer writes the files. It even strips out ESLint and Prettier configs that would conflict, so you don't debug duplicate rules later.

Three Toolchain Choices

Ultracite works with Oxlint plus Oxfmt, Biome, or ESLint plus Prettier and Stylelint. Oxlint is the fastest option, and it runs far quicker than ESLint according to the project. Biome bundles linting and formatting into one Rust binary. The ESLint route is there for teams that rely on its large plugin library.

AI Agent Rule Files

This is the feature that sets Ultracite apart from a plain linter. init generates context files for Claude Code, GitHub Copilot, Cursor, Gemini, and other agents, so their suggestions match your project's style. It also ships a reusable skill and hooks that reformat code right after an AI edit lands.

Safe Automatic Fixes

ultracite fix corrects formatting and many lint errors that are safe to change, like removing unused imports or switching == to ===. Riskier rewrites wait behind a --unsafe flag, and anything needing developer judgment gets flagged instead of silently changed.

Editor and CI Coverage

Formatting runs on save in VS Code, Cursor, and Windsurf, and init can also write Zed settings. Every toolchain runs from the command line through ultracite check and ultracite fix, which means the same checks work in any editor and in CI.

Monorepo and Git Hook Support

One configuration spans every package in a monorepo, doing away with the pile of duplicate config files that usually builds up. Ultracite also hooks into Husky, Lefthook, lint-staged, and pre-commit so staged files stay clean before they reach review.

Type Safety Defaults

Setup enables strict null checks in your tsconfig.json files unless they're already on or you've turned them off. The presets add lint rules that catch unsafe typing and suggest fixes, which cuts down on runtime errors early.

Pros and cons

Pros

  • Free and open source under the MIT license, with no paid tier or seat limits.
  • Cuts linting and formatting setup from hours to one command.
  • Rust-backed engines like Biome and Oxlint keep checks fast on large projects.
  • Generates matching rule files for AI coding agents, so humans and models share one style.
  • Covers monorepos and CSS, JSON, Markdown, and other non-JavaScript files.

Cons

  • Opinionated defaults mean turning off many rules leaves you with little benefit, per the project's own FAQ.
  • You still need to learn the underlying tool, such as Biome or ESLint, when a rule does something unexpected.
  • No hosted dashboard or GUI, so configuration and reporting stay in the terminal.
  • CLI and editor setup is aimed at JavaScript and TypeScript, not other language stacks.

Frequently asked questions

Ultracite is a preset, not a linter. It's a curated bundle of rules and settings that runs on top of Biome, Oxlint, or ESLint, which do the actual formatting and linting. Think of it as the config layer that saves you from choosing and tuning every rule yourself.