UPDATE 2023: ESLint is deprecating formatting rules and recommend you use a source code formatter instead.

tl;dr: Use eslint-config-prettier in eslint, and run prettier separately. You can ignore the rest.

From v8.53.0 onwards, you will see a deprecation warning if those formatting rules are enabled in your config. You should still use eslint-config-prettier to disable conflicting rules until the rules are removed in a new major release.

ESLint contains many rules and those that are formatting-related might conflict with Prettier, such as arrow-parens, space-before-function-paren, etc. Hence using them together will cause some issues. The following tools have been created to use ESLint and Prettier together.

prettier-eslint eslint-plugin-prettier eslint-config-prettier
What it is A JavaScript module exporting a single function. An ESLint plugin. An ESLint configuration.
What it does Runs the code (string) through prettier then eslint --fix. The output is also a string. Plugins usually contain implementations for additional rules that ESLint will check for. This plugin uses Prettier under the hood and will raise ESLint errors when your code differs from Prettier's expected output. This config turns off formatting-related rules that might conflict with Prettier, allowing you to use Prettier with other ESLint configs like eslint-config-airbnb.
How to use it Either calling the function in your code or via prettier-eslint-cli if you prefer the command line. Add it to your .eslintrc. Add it to your .eslintrc.
Is the final output Prettier compliant? Depends on your ESLint config Yes Yes
Do you need to run prettier command separately? No No Yes
Do you need to use anything else? No You may want to turn off conflicting rules using eslint-config-prettier. No

For more information, refer to the official Prettier docs.

It's the recommended practice to let Prettier handle formatting and ESLint for non-formatting issues, prettier-eslint is not in the same direction as that practice, hence prettier-eslint is not recommended anymore. You can use eslint-plugin-prettier and eslint-config-prettier together.

Answer from Yangshun Tay on Stack Overflow
Top answer
1 of 2
456

UPDATE 2023: ESLint is deprecating formatting rules and recommend you use a source code formatter instead.

tl;dr: Use eslint-config-prettier in eslint, and run prettier separately. You can ignore the rest.

From v8.53.0 onwards, you will see a deprecation warning if those formatting rules are enabled in your config. You should still use eslint-config-prettier to disable conflicting rules until the rules are removed in a new major release.

ESLint contains many rules and those that are formatting-related might conflict with Prettier, such as arrow-parens, space-before-function-paren, etc. Hence using them together will cause some issues. The following tools have been created to use ESLint and Prettier together.

prettier-eslint eslint-plugin-prettier eslint-config-prettier
What it is A JavaScript module exporting a single function. An ESLint plugin. An ESLint configuration.
What it does Runs the code (string) through prettier then eslint --fix. The output is also a string. Plugins usually contain implementations for additional rules that ESLint will check for. This plugin uses Prettier under the hood and will raise ESLint errors when your code differs from Prettier's expected output. This config turns off formatting-related rules that might conflict with Prettier, allowing you to use Prettier with other ESLint configs like eslint-config-airbnb.
How to use it Either calling the function in your code or via prettier-eslint-cli if you prefer the command line. Add it to your .eslintrc. Add it to your .eslintrc.
Is the final output Prettier compliant? Depends on your ESLint config Yes Yes
Do you need to run prettier command separately? No No Yes
Do you need to use anything else? No You may want to turn off conflicting rules using eslint-config-prettier. No

For more information, refer to the official Prettier docs.

It's the recommended practice to let Prettier handle formatting and ESLint for non-formatting issues, prettier-eslint is not in the same direction as that practice, hence prettier-eslint is not recommended anymore. You can use eslint-plugin-prettier and eslint-config-prettier together.

2 of 2
3
  • Use eslint-config-prettier to turn-off eslint rules that are unnecessary or might conflict with Prettier. See 1st line in readme: eslint-config-prettier.
  • Use eslint-plugin-prettier to run Prettier as an Eslint-rule. See 1st line in readme: eslint-plugin-prettier
  • Use both to take advantage of both tools. See recommended configuration: eslint-plugin-prettier. This way you use plugin to run Prettier as an Eslint-rule, and config to turn-off eslint rules that are unnecessary or might conflict with Prettier.
  • You can ignore prettier-eslint
🌐
GitHub
github.com › prettier › eslint-plugin-prettier
GitHub - prettier/eslint-plugin-prettier: ESLint plugin for Prettier formatting · GitHub
This plugin works best if you disable all other ESLint rules relating to code formatting, and only enable rules that detect potential bugs. If another active ESLint rule disagrees with prettier about how code should be formatted, it will be ...
Starred by 3.6K users
Forked by 212 users
Languages   JavaScript
🌐
Medium
allalmohamedlamine.medium.com › eslint-plugin-prettier-vs-eslint-config-prettier-cb5476ed1f33
eslint-plugin-prettier vs eslint-config-prettier | by Mohamed Lamine Allal | Medium
November 27, 2023 - If you count to use prettier through ... as formatter ✨ Then you should use eslint-plugin-prettier - ( which does internally use eslint-config-prettier to disable the conflicting rules )...
🌐
Prettier
prettier.io › docs › integrating-with-linters
Integrating with Linters · Prettier
eslint-config-prettier · Check out the above links for instructions on how to install and set things up. When searching for both Prettier and your linter on the Internet you’ll probably find more related projects. These are generally not recommended, but can be useful in certain circumstances. First, we have plugins that let you run Prettier as if it was a linter rule: eslint-plugin-prettier ·
🌐
Joshuakgoldberg
joshuakgoldberg.com › blog › you-probably-dont-need-eslint-config-prettier-or-eslint-plugin-prettier
You Probably Don't Need eslint-config-prettier or eslint-plugin-prettier | Goldblog
Hence the plugin: prefix in front of them: that’s how ESLint knows where to find the configs. eslint-config-prettier is a shareable config that disables formatting-related rules.
🌐
GitHub
github.com › prettier › eslint-config-prettier
GitHub - prettier/eslint-config-prettier: Turns off all rules that are unnecessary or might conflict with Prettier. · GitHub
If you encounter a shared config that uses a non-standard plugin name, please ask them to use the standard name instead. Some of the rules that eslint-config-prettier turns off may be deprecated, or even removed from ESLint. This is perfectly fine, but if you really need to omit the deprecated and removed rules, you can do so by setting the ESLINT_CONFIG_PRETTIER_NO_DEPRECATED environment variable to a non-empty value.
Starred by 5.9K users
Forked by 262 users
Languages   JavaScript
🌐
Reddit
reddit.com › r/node › why use prettier if eslint can format?
r/node on Reddit: Why use prettier if ESLint can format?
July 27, 2022 -

I've heard ESLint can format but I haven't found a clear answer why it seems prettier is used instead of the ESLint formatter. Whenever I try to look it up most comments neglect to mention that ESLint can also format so it's not obvious why prettier would be needed at all.

Find elsewhere
🌐
Medium
medium.com › @robinviktorsson › setting-up-eslint-and-prettier-for-a-typescript-project-aa2434417b8f
Setting Up ESLint and Prettier for a TypeScript Project | by Robin Viktorsson | Medium
March 10, 2025 - eslint-config-prettier disables ESLint rules that conflict with Prettier. eslint-plugin-prettier runs Prettier as an ESLint rule.
🌐
Ben Ilegbodu
benmvp.com › blog › prettier-eslint
Prettier + ESLint = ❤️ | Ben Ilegbodu
There are some rules within it that also conflict with Prettier, so eslint-config-prettier provides an additional React-specific config to extend from that removes those conflicting rules.
🌐
Better Stack
betterstack.com › community › guides › scaling-nodejs › prettier-vs-eslint
Prettier vs ESLint: Choosing the Right Tool for Code Quality | Better Stack Community
Running ESLint involves checking ... priorities: Prettier focuses on doing one thing with minimal configuration, while ESLint provides extensive customization for comprehensive code quality enforcement....
🌐
npm
npmjs.com › package › eslint-config-prettier
eslint-config-prettier - npm
If you encounter a shared config that uses a non-standard plugin name, please ask them to use the standard name instead. Some of the rules that eslint-config-prettier turns off may be deprecated, or even removed from ESLint. This is perfectly fine, but if you really need to omit the deprecated and removed rules, you can do so by setting the ESLINT_CONFIG_PRETTIER_NO_DEPRECATED environment variable to a non-empty value.
      » npm install eslint-config-prettier
    
Published   Jul 18, 2025
Version   10.1.8
Author   Simon Lydell
🌐
Josh Finnie
joshfinnie.com › blog › adding-eslint-and-prettier-to-my-blog
Adding ESLint & Prettier to My Blog | www.joshfinnie.com
December 2, 2024 - ESLint’s plugin architecture allows customization for any project. It works with frameworks like Astro and integrates with tools like Prettier. While Prettier handles formatting, ESLint focuses on code logic and structure.
🌐
GitHub
github.com › prettier › eslint-config-prettier › issues › 177
Confused as to What to Extend · Issue #177 · prettier/eslint-config-prettier
February 21, 2021 - extends: [ 'airbnb', 'airbnb/hooks', 'plugin:react/recommended', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended', 'prettier', ], plugins: ['@typescript-eslint'],
Author   ghost
🌐
Medium
medium.com › @samueldeveloper › eslint-vs-prettier-why-youre-probably-using-them-wrong-and-how-to-fix-it-8f50b79eb519
🚦 ESLint vs Prettier: Why You’re Probably Using Them Wrong — and How to Fix It | by Samuel Ruiz | Medium
November 4, 2025 - eslint-config-prettier turns off all ESLint rules that conflict with Prettier, so the two tools stop stepping on each other. ... No more “double formatting”, no more rule wars.
🌐
Medium
medium.com › @contactmanoharbatra › eslint-and-prettier-configuration-f0259ebeb58b
Eslint and Prettier configuration | by Manohar Batra | Medium
September 10, 2025 - Add a prettier.config.js (or .prettierrc): export default { semi: false, singleQuote: true, trailingComma: "all", printWidth: 100, tabWidth: 2, } old style · { semi: false, singleQuote: true, trailingComma: "all", printWidth: 100, tabWidth: 2, } Here’s the updated flat config: (this is optional) // eslint.config.js import globals from "globals" import js from "@eslint/js" import pluginReact from "eslint-plugin-react" import pluginReactHooks from "eslint-plugin-react-hooks" import pluginJsxA11y from "eslint-plugin-jsx-a11y" import pluginImport from "eslint-plugin-import" import pluginPrettie
🌐
Medium
allalmohamedlamine.medium.com › flat-config-setting-up-eslint-and-prettier-with-eslint-prettier-plugin-7bd1ca453129
Flat config: Setting up Eslint and Prettier with eslint-prettier-plugin | by Mohamed Lamine Allal | Medium
November 27, 2023 - eslint-plugin-prettier ◌ use eslint to do all, through the prettier plugin ◌ Which does use eslint-config-prettier to disable conflicting rules ◌ and does add linting ability ◌ and does run prettier for us to fix things
🌐
npm
npmjs.com › package › eslint-plugin-prettier
eslint-plugin-prettier - npm
This plugin works best if you disable all other ESLint rules relating to code formatting, and only enable rules that detect potential bugs. If another active ESLint rule disagrees with prettier about how code should be formatted, it will be ...
      » npm install eslint-plugin-prettier
    
Published   Jan 14, 2026
Version   5.5.5
Author   Teddy Katz
🌐
StackShare
stackshare.io › stackups › eslint-vs-prettier
ESLint vs Prettier | What are the differences? | StackShare
It provides plugins for editors like Visual Studio Code, Sublime Text, and Atom, allowing real-time linting and quick error identification during development. Additionally, ESLint can be easily integrated into build tools or pre-commit hooks for enforcing code quality standards. On the other hand, Prettier also supports integration with various tools and editors but primarily focuses on providing a standalone code formatter.