The AI-ready formatter that helps you write and generate code faster.

Ultracite is a zero-config Biome preset that provides a robust linting and formatting experience for your team and your AI integrations.

$

npx ultracite@latest init
Read the docs

Used by over 500 developers

Finally — a ⚡ lightning-fast formatter that ensures you, your team and your AI agents are writing code in harmony.

Subsecond linting and formatting

Built in Rust for instant code analysis and processing, making on-save checks feel seamless without interrupting your workflow.

✔ Backed up original state in git stash(5bda95f)❯ Running tasks for staged files...  ❯ packages / frontend /.lintstagedrc.json — 1 file    ↓ *.js — no files[SKIPPED]    ❯ *.{ ts, tsx, js, jsx } — 1 file      ⠹ npx ultracite format◼ Applying modifications from tasks...◼ Cleaning up temporary files...

Plays nice with others

Built-in scaffolding for Husky pre-commit hooks and lint-staged configuration, with support for all major package managers.

$ 
Diagnostics not shown: 35.Checked 1740 files in 214ms.Found 2 errors.Found 53 warnings.Done in 312ms.

Intuitive and robust

Automatically reformats code and fixes lint issues on save, with clear error reporting for issues that need manual attention.

TypeScript

Type Error

Property "name" does not exist on type "User"

Line 42, Column 10

TypeScript

Unused Variable

Variable "count" is declared but never used

Line 15, Column 14

TypeScript

Missing Return

Function "getUser" lacks return type annotation.

Line 28, Column 20

Maximum type safety

Enforces strict type checking and best practices by default, catching type errors and preventing unsafe code patterns.

Monorepo diagram

Designed for monorepos

Unified toolchain configuration across all packages and apps, eliminating thousands of lines of duplicate config files while maintaining consistency.

Don't use `accessKey` attribute on any HTML element.

Don't set `aria-hidden="true"` on focusable elements.

Don't add ARIA roles, states, and properties to elements that don't support them.

Don't use distracting elements like `<marquee>` or `<blink>`.

Only use the`scope` prop on`<th>` elements.

Don't assign non-interactive ARIA roles to interactive HTML elements.

Make sure label elements have text content and are associated with an input.

Don't assign interactive ARIA roles to non-interactive HTML elements.

Don't assign `tabIndex` to non-interactive HTML elements.

Don't use positive integers for `tabIndex` property.

Don't include "image", "picture", or "photo" in img `alt` prop.

Highly opinionated

Strict configuration and opinionated rules to ensure consistent code, eliminating formatting debates and streamlining code review.

Zero-config by design

Preconfigured rules optimized for Next.js, React and TypeScript projects with sensible defaults, while still allowing customization when needed.

biome.jsonc

{
  "$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
  "extends": ["ultracite"]
}

Designed for humans and AI

Ensure consistent code style and quality across all team members and AI models, eliminating debates over formatting and reducing code review friction.

AI Editor Rules

Synchronized rule files for VS Code, Cursor, Windsurf and Zed keeps your AI responses consistent with your coding style.

Configurable spec

Extend the Ultracite spec to your liking.

Output panel

Biome uses the VS Code output panel to show problems.

MCP Support

Run external code through the Ultracite MCP server to lint without needing to install it locally, or connect it to an Agent for consistent code quality in background jobs.

Format on save

Format your code on save with Ultracite.

Works with all your favourite IDEs.

What the community is saying

Here's what some of the most FORWARD-THINKING, 1000 IQ developers in the React ecosystem have to say about Ultracite.

Install in seconds. Run in milliseconds.

Install Ultracite and start shipping code faster.

$

npx ultracite@latest init