Building the product · Edition No. 24 · 18 Sep 2026

astral-sh/ruff

One fast program that both checks and formats Python code, carrying the rules of Flake8, isort and pyupgrade and a formatter close to Black.

← Building the productRead the whole edition →

49.6k stars · MIT · 0.16.8 (2026-09-16), read from /releases/latest, which printed the year explicitly · Track this in Scout

One fast program that both checks and formats Python code, carrying the rules of Flake8, isort and pyupgrade and a formatter close to Black.

Repo detailsthe review · specs · pros & cons · install

What it is

A linter and a formatter, written in Rust. A linter is a program that reads your code without running it and reports mistakes and bad habits. A formatter rewrites the spacing and line breaks so every file looks the same. Ruff carries the rules of Flake8, isort, pyupgrade and several other tools, and its formatter produces output very close to Black's.What it is good for. Any Python project, and especially one with more than a few hundred files, because the older tools take long enough on a big project that people quietly stop using them. The problem it removes is the review argument about spacing. A short line about Grasppy and ScalpingMate: both are Python, and both are written mostly by a coding assistant. An assistant produces a lot of code quickly, and this is the cheapest way to keep all of it in one style and catch the unused import it left behind.

Stars49.6k
LicenceMIT
Latest0.16.8 (2026-09-16), read from /releases/latest, which printed the year explicitly
Good
  • Fast enough to run on every file save without noticing, which is what makes it actually get used.
  • One tool instead of four, so there is one configuration file and one version to keep up to date.
  • MIT licence, a release most weeks, and it reads the configuration files you already have.
Watch for
  • Turning it on for an existing project makes one enormous commit where every file changed. Do that on its own, before anything else.
  • A few rules from the older tools have no equivalent yet, so a very strict setup may not move across whole.
  • It checks style and simple mistakes. It does not check types, so you still need mypy or something like it for that.
Similar repositories
Install
# Inside your project's virtual environment:
source venv/bin/activate
pip install ruff
# Or system-wide on this kind of Linux:
pip install ruff --break-system-packages
# Then, from the project folder:
ruff check .            # report problems
ruff check --fix .      # fix the ones it can fix safely
ruff format .           # reformat everything
Screenshots
astral-sh/ruff: GitHub preview card

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.