# tidy > A code formatter written in Rust that prints what Prettier prints, for every language it supports. tidy is a code formatter written in Rust. It prints what Prettier 3.9.9 prints, for JavaScript, TypeScript, JSX, HTML, Vue, Handlebars, MJML, CSS, SCSS, Less, JSON, JSONC, JSON5, YAML, GraphQL, Markdown, XML, SVG, TOML, Dockerfiles and INI. It is a single native binary with no Node runtime, and a 12,071-file corpus checks in 280 ms where Prettier takes 18.5 s. Every page below is also served as Markdown at the same path with a `.md` extension. ## Docs - [What is tidy?](https://tidy.lukeed.com/docs/): tidy is a code formatter written in Rust. One binary prints what Prettier prints, for every language it supports. - [Why tidy](https://tidy.lukeed.com/docs/why/): What tidy is for, who should use it, and when another formatter is the better answer. - [Comparison](https://tidy.lukeed.com/docs/comparison/): tidy next to Prettier, Biome, oxfmt and dprint, on output, languages and speed. - [Option philosophy](https://tidy.lukeed.com/docs/option-philosophy/): Why tidy has the options it has, and why it will not grow more. - [Deviations from Prettier](https://tidy.lukeed.com/docs/deviations/): Where tidy prints something other than Prettier, why, and how each case is tracked. - [Install](https://tidy.lukeed.com/docs/install/): Install the tidy command, or the tidyrs package for the Node API, and check that it works. - [CLI](https://tidy.lukeed.com/docs/cli/): Every flag of the tidy command, what it does, and the exit codes it returns. - [Ignoring code](https://tidy.lukeed.com/docs/ignore/): Keep a file, a range or one node as it is written, with a directive in the file itself. - [Pre-commit](https://tidy.lukeed.com/docs/precommit/): Format staged files before each commit, with a hook, lint-staged, husky or pre-commit. - [Continuous integration](https://tidy.lukeed.com/docs/ci/): Fail a build when something is not formatted, on GitHub Actions and elsewhere. - [Editors](https://tidy.lukeed.com/docs/editors/): Format on save in VS Code, Zed, Neovim and JetBrains, by running the binary. - [Linters](https://tidy.lukeed.com/docs/linters/): Run tidy next to ESLint or Biome without the two fighting over the same code. - [Configuration file](https://tidy.lukeed.com/docs/configuration/): Where tidy looks for tidy.json, how the nearest one wins, and how it stacks with .editorconfig and the command line. - [Options](https://tidy.lukeed.com/docs/options/): Every option tidy accepts, the Prettier option it matches, and the languages it reaches. - [EditorConfig](https://tidy.lukeed.com/docs/editorconfig/): The .editorconfig properties tidy reads, and how they sit under tidy.json. - [Languages](https://tidy.lukeed.com/docs/languages/): Every language tidy formats, the file names it recognises, and whose style it follows. - [Embedded code](https://tidy.lukeed.com/docs/embedded/): How tidy formats the code of one language inside another, and how to turn it off. - [Node API](https://tidy.lukeed.com/docs/node/): The tidyrs package: format and check a string from JavaScript, with no child process. - [Rust API](https://tidy.lukeed.com/docs/rust/): The tidy crate: format a string, reuse a formatter across files, and handle embedded code yourself. - [Benchmarks](https://tidy.lukeed.com/docs/benchmarks/): Every corpus, every tool, and the method behind the numbers on this site. - [Technical details](https://tidy.lukeed.com/docs/technical-details/): How tidy is built, why its output matches Prettier, and how that is kept true. - [Credits](https://tidy.lukeed.com/docs/credits/): The projects tidy ports code from, and the licenses they carry. ## Source - [Repository](https://github.com/lukeed/tidy) - [Deviations from Prettier](https://github.com/lukeed/tidy/blob/main/docs/deviations.md) - [Credits](https://github.com/lukeed/tidy/blob/main/docs/credits.md)