# ESLint vs pre-commit

**Leader by Vioscale score:** ESLint

| Attribute | ESLint | pre-commit |
|---|---|---|
| **Vioscale score** | 73.6 (79% (high)) | 68.2 (73% (medium)) |
| activity.commits_last_30d | 50 | 13 |
| adoption.dependent_repos | 1,569,244 | 35,684 |
| adoption.github_stars | 27,484 | 15,536 |
| adoption.package_downloads_weekly | 160,098,819 | 42,454,729 |
| deployment.options | `{"self_hosted":true}` | `{"self_hosted":true}` |
| description.long | An open-source linter and fixer for JavaScript and JSX that runs locally in editors and CI pipelines. It uses AST analysis to catch problems and can automatically fix many issues, with full support for custom rules and extensibility. | A framework that automates the execution of code quality checks as git pre-commit hooks, eliminating the need for developers to manually install language-specific dependencies on their machines to run linters and formatters written in any programming language. |
| features.capabilities | `{"autofix":true,"function":"linter_formatter","ci_gating":true,"deployment":"cli_local","open_source":"oss","config_model":"config_file","custom_rules":true,"impl_language":"JavaScript","pricing_model":"free","language_scope":"single_language","editor_integration":true}` | `{"autofix":false,"metrics":false,"function":"meta_runner","ci_gating":true,"deployment":"cli_local","incremental":false,"open_source":"oss","config_model":"config_file","custom_rules":true,"impl_language":"Python","pricing_model":"free","language_scope":"multi_language","editor_integration":false}` |
| integrations.count | 2 | - |
| integrations.list | `[{"name":"eslint-plugin-react"},{"name":"eslint-plugin-unicorn"}]` | - |
| language.primary | JavaScript | Python |
| license.spdx | MIT | MIT |
| platform.support | `{"cli":true}` | `{"cli":true}` |
| pricing | `{"type":"open_source","plans":[{"free":true,"name":"Open Source","features":["Find issues in JavaScript code","Automatically fix problems","Custom parsers","Custom rules","Text editor integration","CI pipeline integration"],"description":"Free open source linter","contactSales":false}],"summary":"Free open source","freeTier":true,"sourceUrl":"https://eslint.org","retrievedAt":"2026-08-05T14:08:29.561Z"}` | `{"type":"free","sourceUrl":"https://pre-commit.com","retrievedAt":"2026-08-14T09:20:48.398Z"}` |
| pricing.free_tier | yes | yes |
| pricing.model | commercial | commercial |
| pricing.price_level | free | free |
| pricing.transparent | - | yes |
| release.cadence_days | 13 | 57 |
| release.history | `[{"url":"https://github.com/eslint/eslint/releases/tag/v10.9.1","date":"2026-08-24T18:18:59Z","type":"stable","version":"v10.9.1"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.9.0","date":"2026-08-21T13:05:50Z","type":"stable","version":"v10.9.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.8.1","date":"2026-08-07T20:16:24Z","type":"stable","version":"v10.8.1"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.8.0","date":"2026-07-24T20:15:28Z","type":"stable","version":"v10.8.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.7.0","date":"2026-07-10T21:22:56Z","type":"stable","version":"v10.7.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v9.39.5","date":"2026-07-10T20:41:58Z","type":"stable","version":"v9.39.5"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.6.0","date":"2026-06-26T20:09:26Z","type":"stable","version":"v10.6.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.5.0","date":"2026-06-12T17:54:47Z","type":"stable","version":"v10.5.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.4.1","date":"2026-05-29T20:32:39Z","type":"stable","version":"v10.4.1"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.4.0","date":"2026-05-15T14:11:22Z","type":"stable","version":"v10.4.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.3.0","date":"2026-05-01T15:39:48Z","type":"stable","version":"v10.3.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.2.1","date":"2026-04-17T20:17:51Z","type":"stable","version":"v10.2.1"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.2.0","date":"2026-04-03T20:36:28Z","type":"stable","version":"v10.2.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.1.0","date":"2026-03-20T15:31:47Z","type":"stable","version":"v10.1.0"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.0.3","date":"2026-03-06T22:53:26Z","type":"stable","version":"v10.0.3"},{"url":"https://github.com/eslint/eslint/releases/tag/v9.39.4","date":"2026-03-06T21:46:54Z","type":"stable","version":"v9.39.4"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.0.2","date":"2026-02-23T21:43:46Z","type":"stable","version":"v10.0.2"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.0.1","date":"2026-02-20T15:15:18Z","type":"stable","version":"v10.0.1"},{"url":"https://github.com/eslint/eslint/releases/tag/v9.39.3","date":"2026-02-20T13:52:17Z","type":"stable","version":"v9.39.3"},{"url":"https://github.com/eslint/eslint/releases/tag/v10.0.0","date":"2026-02-06T22:30:54Z","type":"stable","version":"v10.0.0"}]` | `[{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.6.2","date":"2026-08-10T22:08:59Z","type":"stable","version":"v4.6.2"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.6.1","date":"2026-07-21T20:58:53Z","type":"stable","version":"v4.6.1"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.6.0","date":"2026-04-21T20:32:56Z","type":"stable","version":"v4.6.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.5.1","date":"2025-12-16T21:18:45Z","type":"stable","version":"v4.5.1"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.5.0","date":"2025-11-22T21:08:24Z","type":"stable","version":"v4.5.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.4.0","date":"2025-11-08T21:48:28Z","type":"stable","version":"v4.4.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.3.0","date":"2025-08-09T18:59:03Z","type":"stable","version":"v4.3.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.2.0","date":"2025-03-18T21:42:20Z","type":"stable","version":"v4.2.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.1.0","date":"2025-01-20T18:49:11Z","type":"stable","version":"v4.1.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.0.1","date":"2024-10-08T16:10:45Z","type":"stable","version":"v4.0.1"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v4.0.0","date":"2024-10-05T19:19:45Z","type":"stable","version":"v4.0.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.8.0","date":"2024-07-28T20:05:15Z","type":"stable","version":"v3.8.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.7.1","date":"2024-05-11T01:31:03Z","type":"stable","version":"v3.7.1"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.7.0","date":"2024-03-24T17:41:43Z","type":"stable","version":"v3.7.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.6.2","date":"2024-02-18T18:22:07Z","type":"stable","version":"v3.6.2"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.6.1","date":"2024-02-10T19:47:57Z","type":"stable","version":"v3.6.1"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.6.0","date":"2023-12-09T21:29:42Z","type":"stable","version":"v3.6.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.5.0","date":"2023-10-13T16:06:55Z","type":"stable","version":"v3.5.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.4.0","date":"2023-09-02T17:13:27Z","type":"stable","version":"v3.4.0"},{"url":"https://github.com/pre-commit/pre-commit/releases/tag/v3.3.3","date":"2023-06-13T23:12:35Z","type":"stable","version":"v3.3.3"}]` |
| reliability.status_page | - | yes |
| security.scorecard | 6.3 | 4.6 |
| security.vulnerabilities | `{"count":2,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=npm&package_name=eslint&per_page=100","last_12m":1,"max_severity":"MODERATE"}` | `{"count":0,"source":"https://advisories.ecosyste.ms/api/v1/advisories?ecosystem=pypi&package_name=pre-commit&per_page=100","last_12m":0,"max_severity":null}` |

## Capabilities (Code Quality Tools)

| Capability | ESLint | pre-commit |
|---|:--:|:--:|
| **Core** |  |  |
| Function | Linter + formatter | Meta-runner |
| Language scope | Single-language | Multi-language |
| Implementation language | JavaScript | Python |
| **Capability** |  |  |
| Autofix | ✓ | ✗ |
| **Config** |  |  |
| Config model | Config file | Config file |
| **Extensibility** |  |  |
| Custom rules | ✓ | ✓ |
| **Deployment** |  |  |
| Deployment | CLI-local | CLI-local |
| **Delivery** |  |  |
| Editor integration | ✓ | ✗ |
| CI / VCS gating | ✓ | ✓ |
| **Insight** |  |  |
| Code metrics | - | ✗ |
| **Performance** |  |  |
| Incremental / monorepo aware | - | ✗ |
| **Licensing** |  |  |
| Open-source | OSS | OSS |
| **Commercial** |  |  |
| Pricing model | Free | Free |

*Source: Vioscale. Generated 2026-09-01T16:41:05.661Z. "-" = undocumented, not absent.*
