Skip to main content
ESLint

ESLint - Pluggable JavaScript Linter

ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code. In many ways, it is similar to JSLint and JSHint with a few key differences that make it the most popular JavaScript linter today.

What Makes ESLint Different

AST-Based Analysis

ESLint uses an Abstract Syntax Tree (AST) to evaluate patterns in code, providing deep and accurate analysis of your JavaScript.

Espree Parser

Built on the Espree JavaScript parser, ESLint has full support for ECMAScript 3, 5, and every year from 2015 up to the latest stage 4 specifications.

Completely Pluggable

Every single rule is a plugin. You can add custom rules at runtime, create your own plugins, and extend ESLint to match your exact needs.

Key Features

Auto-Fix Problems

Many errors can be automatically fixed with the --fix flag, saving you time and ensuring consistent code style across your project.

Customizable Rules

Configure each rule independently with three severity levels: off, warn, or error. Fine-tune ESLint to your team’s preferences.

JSX & TypeScript

Native JSX parsing support and extensive TypeScript compatibility through parser plugins like @typescript-eslint/parser.

Modern Config System

Use the new flat config format with eslint.config.js for a more intuitive and powerful configuration experience.

Quick Stats

  • Version: 10.0.1
  • Node.js Support: ^20.19.0, ^22.13.0, or >=24
  • License: MIT
  • Maintained By: OpenJS Foundation
ESLint requires Node.js built with SSL support. If you’re using an official Node.js distribution, SSL is always built in.

Get Started

Quick Start

Get up and running with ESLint in under 5 minutes

Installation

Detailed installation instructions for all package managers

Configuration

Learn how to configure ESLint for your project

Rules Reference

Browse the complete list of ESLint rules
ESLint comes with a carefully curated set of recommended rules that catch common errors:
import { defineConfig } from "eslint/config";
import js from "@eslint/js";

export default defineConfig([
  js.configs.recommended,
  {
    files: ["**/*.js", "**/*.cjs", "**/*.mjs"],
    rules: {
      "prefer-const": "warn",
      "no-constant-binary-expression": "error",
    },
  },
]);
The @eslint/js recommended configuration includes 74 rules that catch common programming errors like no-unused-vars, no-undef, no-unreachable, and many more.

Rule Severity Levels

ESLint offers three severity levels for each rule:
LevelNumericDescription
"off"0Turn the rule off completely
"warn"1Turn the rule on as a warning (doesn’t affect exit code)
"error"2Turn the rule on as an error (exit code will be 1)
export default defineConfig([
  {
    rules: {
      "no-unused-vars": "error",      // Exit with error
      "no-console": "warn",           // Show warning
      "no-debugger": "off",           // Ignore completely
    },
  },
]);

Version Support

The ESLint team provides:
  • Ongoing support for the current version
  • 6 months of limited support for the previous version (critical bugs, security issues, and compatibility issues only)
  • Commercial support through partners Tidelift and HeroDevs

Community & Support

Discord

Join the community chat

GitHub Discussions

Ask questions and share ideas

Report Bugs

Help improve ESLint

Next Steps

Ready to start using ESLint? Follow our Quick Start Guide to get linting in under 5 minutes, or dive into the detailed installation instructions to learn about all the available options.