# ESLint vs PHPStan

**Leader by Vioscale score:** ESLint

| Attribute | ESLint | PHPStan |
|---|---|---|
| **Vioscale score** | 73.6 (79% (high)) | 52.6 (53% (medium)) |
| activity.commits_last_30d | 50 | 100 |
| adoption.dependent_repos | 1,569,244 | 0 |
| adoption.github_stars | 27,484 | 14,082 |
| adoption.package_downloads_weekly | 160,098,819 | - |
| 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. | PHPStan is a static analysis tool for PHP that scans codebases to find bugs before they reach production. It offers both a free open-source version and a paid Pro tier with a web UI and continuous background analysis. |
| 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,"function":"static_analyzer","ci_gating":true,"incremental":true,"open_source":"oss","config_model":"config_file","custom_rules":true,"impl_language":"PHP","pricing_model":"free","language_scope":"single_language","editor_integration":true}` |
| integrations.count | 2 | 3 |
| integrations.list | `[{"name":"eslint-plugin-react"},{"name":"eslint-plugin-unicorn"}]` | `[{"name":"Symfony"},{"name":"Laravel"},{"name":"Doctrine"}]` |
| language.primary | JavaScript | PHP |
| license.spdx | MIT | MIT |
| market.availability | - | `{"hqCountry":"CZ","primaryMarkets":[],"availabilityScope":"global","availableCountries":[],"notAvailableCountries":[]}` |
| platform.support | `{"cli":true}` | `{"cli":true,"web":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":"hybrid","plans":[{"free":true,"name":"PHPStan (Free)","summary":"Free, open-source","features":["Bug detection","CLI interface","CI integration","Rule levels 0-10","Custom rules support"],"description":"Open-source version with CLI interface","contactSales":false},{"free":false,"name":"PHPStan Pro","summary":"Subscription required; exact pricing not disclosed","features":["Web UI instead of CLI","Auto-refresh","Continuous background analysis"],"description":"Premium package with web UI and continuous analysis","contactSales":false}],"summary":"Free open-source tier; Pro subscription available at undisclosed pricing","currency":"USD","freeTier":true,"sourceUrl":"https://phpstan.org/","retrievedAt":"2026-08-14T08:30:37.776Z"}` |
| pricing.free_tier | yes | yes |
| pricing.model | commercial | freemium |
| pricing.price_level | free | low |
| pricing.transparent | - | no |
| release.cadence_days | 13 | 2 |
| 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/phpstan/phpstan/releases/tag/2.2.9","date":"2026-08-22T07:39:37Z","type":"stable","version":"2.2.9"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.8","date":"2026-08-04T22:23:06Z","type":"stable","version":"2.2.8"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.7","date":"2026-07-29T17:40:47Z","type":"stable","version":"2.2.7"},{"url":"https://github.com/phpstan/phpstan/releases/tag/1.12.34","date":"2026-07-28T10:05:36Z","type":"stable","version":"1.12.34"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.6","date":"2026-07-26T21:24:15Z","type":"stable","version":"2.2.6"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.5","date":"2026-07-05T06:33:25Z","type":"stable","version":"2.2.5"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.4","date":"2026-07-03T07:01:31Z","type":"stable","version":"2.2.4"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.3","date":"2026-06-30T21:16:38Z","type":"stable","version":"2.2.3"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.2","date":"2026-06-05T09:01:35Z","type":"stable","version":"2.2.2"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.1","date":"2026-05-28T14:45:45Z","type":"stable","version":"2.2.1"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.2.0","date":"2026-05-28T08:41:56Z","type":"stable","version":"2.2.0"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.56","date":"2026-05-26T17:06:15Z","type":"stable","version":"2.1.56"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.55","date":"2026-05-18T11:59:05Z","type":"stable","version":"2.1.55"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.54","date":"2026-04-29T13:35:54Z","type":"stable","version":"2.1.54"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.53","date":"2026-04-28T16:16:29Z","type":"stable","version":"2.1.53"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.52","date":"2026-04-28T12:27:36Z","type":"stable","version":"2.1.52"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.51","date":"2026-04-21T18:23:04Z","type":"stable","version":"2.1.51"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.50","date":"2026-04-17T13:11:29Z","type":"stable","version":"2.1.50"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.49","date":"2026-04-16T21:12:00Z","type":"stable","version":"2.1.49"},{"url":"https://github.com/phpstan/phpstan/releases/tag/2.1.48","date":"2026-04-15T20:25:35Z","type":"stable","version":"2.1.48"}]` |
| security.gdpr | - | yes |
| security.scorecard | 6.3 | 4.9 |
| 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=nixpkgs&package_name=php82Packages.phpstan&per_page=100","last_12m":0,"max_severity":null}` |

## Capabilities (Code Quality Tools)

| Capability | ESLint | PHPStan |
|---|:--:|:--:|
| **Core** |  |  |
| Function | Linter + formatter | Static analyzer |
| Language scope | Single-language | Single-language |
| Implementation language | JavaScript | PHP |
| **Capability** |  |  |
| Autofix | ✓ | ✗ |
| **Config** |  |  |
| Config model | Config file | Config file |
| **Extensibility** |  |  |
| Custom rules | ✓ | ✓ |
| **Deployment** |  |  |
| Deployment | 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-01T14:32:52.969Z. "-" = undocumented, not absent.*
