Skip to content

Formatter

Biome is an opinionated formatter. It follows a similar philosophy to Prettier, only supporting a few options to avoid debates over styles, turning into debates over Biome options. It deliberately resists the urge to add new options to prevent bike-shed discussions in teams so they can focus on what really matters instead.

Use the formatter with the CLI

Section titled Use the formatter with the CLI

By default, the formatter checks the code and emit diagnostics if there are changes in formatting:

  • npm
  • yarn
  • pnpm
  • Bun Logo bun
  • deno
	
Terminal window
npx @biomejs/biome format ./src
	
Terminal window
yarn biome format ./src
	
Terminal window
pnpm biome format ./src
	
Terminal window
bunx @biomejs/biome format ./src
	
Terminal window
deno run -A npm:@biomejs/biome format ./src

If you want to apply the new formatting, pass the --write option:

  • npm
  • yarn
  • pnpm
  • Bun Logo bun
  • deno
	
Terminal window
npx @biomejs/biome format --write ./src
	
Terminal window
yarn biome format --write ./src
	
Terminal window
pnpm biome format --write ./src
	
Terminal window
bunx @biomejs/biome format --write ./src
	
Terminal window
deno run -A npm:@biomejs/biome format --write ./src

Use the --help flag to know what are the available options:

  • npm
  • yarn
  • pnpm
  • Bun Logo bun
  • deno
	
Terminal window
npx @biomejs/biome format --help
	
Terminal window
yarn biome format --help
	
Terminal window
pnpm biome format --help
	
Terminal window
bunx @biomejs/biome format --help
	
Terminal window
deno run -A npm:@biomejs/biome format --help

Or check the CLI reference section.

Biome provides some options to tune the behavior of its formatter. Differently from other tools, Biome separates language-agnostic options from language-specific options.

The formatter options can be set on the CLI or in the biome.json configuration file. Biome doesn’t support .editorconfig yet.

It’s recommended to use the configuration file to ensure that both the Biome CLI and the Biome LSP apply the same options. The following defaults are applied:

biome.json
{
"formatter": {
"enabled": true,
"formatWithErrors": false,
"ignore": [],
"attributePosition": "auto",
"indentStyle": "tab",
"indentWidth": 2,
"lineEnding": "lf",
"lineWidth": 80
},
"javascript": {
"formatter": {
"arrowParentheses":"always",
"bracketSameLine": false,
"bracketSpacing": true,
"jsxQuoteStyle": "double",
"quoteProperties": "asNeeded",
"semicolons": "always",
"trailingComma": "all"
}
},
"json": {
"formatter": {
"trailingCommas": "none"
}
}
}

The main language-agnostic options supported by the Biome formatter are:

  • indent style (default: tab): Use spaces or tabs for indention;
  • line width (default: 80): The column width at which Biome wraps code;
  • tab width (default: 2): The number of spaces per indention level.

See the configuration reference for more details.

There are times when the formatted code isn’t ideal.

For these cases, you can use a format suppression comment:

example.js
// biome-ignore format: <explanation>

Example:

example.js
const expr =
// biome-ignore format: the array should not be formatted
[
(2 * n) / (r - l),
0,
(r + l) / (r - l),
0,
0,
(2 * n) / (t - b),
(t + b) / (t - b),
0,
0,
0,
-(f + n) / (f - n),
-(2 * f * n) / (f - n),
0,
0,
-1,
0,
];