Ruff vs golangci-lint: open-source code quality and static analysis tools compared
Metrics as of , from the GitHub or GitLab API of each repository. Refreshed monthly.
Summary
Ruff: Python linter and code formatter written in Rust that covers Flake8, Black and isort functions in one tool.
golangci-lint: Go linters runner that executes bundled linters in parallel with caching and YAML configuration.
Both are listed under Code quality and static analysis. The table gives repository metrics from the GitHub API with their fetch date, then the documented facts used for every comparison in this category, each linked to the README or docs page it comes from. A cell reads "not documented" when the fact was not found in the project's documentation; that does not mean the feature is absent.
Side by side
| Fact | Ruff | golangci-lint |
|---|---|---|
| Stars | 49,7311 | 19,3941 |
| Forks | 2,4301 | 1,6251 |
| Contributors | 9791 | 3991 |
| Last release | 2026-09-161 | 2026-08-271 |
| Last commit | 2026-09-221 | 2026-09-201 |
| Commits in 90 days | 1,4471 | 1031 |
| License | MIT1 | GPL-3.01 |
| Primary language | Rust1 | Go1 |
| Status | active1 | active1 |
| Languages or files analysed | Python files (*.py, *.pyi), Jupyter Notebooks (*.ipynb) and pyproject.toml source: Docs: Configuring Ruff | Go code source: README |
| Configuration format | TOML settings in pyproject.toml, ruff.toml or .ruff.toml source: README | Config file in YAML, TOML or JSON (.golangci.yml, .golangci.yaml, .golangci.toml, .golangci.json) source: Docs: Configuration File |
| CI integration | GitHub Actions (ruff-action) and a GitLab CI/CD example with a code quality report source: Docs: Integrations | GitHub Action; GitLab CI component; Buildkite plugin source: Docs: CI Installation |
| Report formats | concise, full, JSON, JSON Lines, JUnit, grouped, GitHub, GitLab, Pylint, rdjson, Azure, SARIF source: Docs: Configuring Ruff | text, JSON, tab, HTML, Checkstyle, Code Climate, JUnit XML, TeamCity, SARIF source: Docs: Command-Line Options |
| Install method | PyPI package ruff via uv, pip or pipx; standalone installers source: README | Binaries, Homebrew (brew install golangci-lint), MacPorts, Chocolatey, Scoop, Docker image golangci/golangci-lint source: Docs: Local Installation |
1 Fetched from the GitHub or GitLab API on . Hover a value for its own date.
When each fits
Written from each project's documented scope, not from preference. Neither tool is ranked.
Ruff
Fits projects that lint and format Python code with one tool; its README describes use in place of Flake8, Black, isort, pydocstyle, pyupgrade and autoflake. source: README
golangci-lint
Fits projects that run several Go linters together; its README describes a runner that runs linters in parallel, uses caching and supports YAML configuration. source: README
More on these tools
Sources
- GitHub REST API: repository, read
- GitHub REST API: repository, read
- GitHub REST API: contributors, read
- GitHub REST API: contributors, read
- GitHub REST API: latest release, read
- GitHub REST API: latest release, read
- GitHub REST API: commits, read
- GitHub REST API: commits, read
- Docs: Configuring Ruff, read
- README, read
- README, read
- Docs: Configuration File, read
- Docs: Integrations, read
- Docs: CI Installation, read
- Docs: Command-Line Options, read
- Docs: Local Installation, read
Documented facts collected 2026-09-22. See the methodology for how metrics and facts are gathered.