compare
Black vs Ruff
The same facts for both, read from GitHub every night, and the relation a person reviewed.
| Fact | Black | Ruff |
|---|---|---|
| Language | Python | Rust |
| Licence | MIT | MIT |
| Stars | 42k | 50k |
| Latest | 26.10.0 | 0.16.10 |
| Last push | 2026-10-05 | 2026-10-06 |
| Release cadence | about 36 days between releases | about 7 days between releases |
| Active contributors | 53 commit authors on the default branch in the last 90 days | 53+ commit authors on the default branch in the last 90 days |
| Flags | none | none |
How they relate
Ruff replaces Black. Alternatives to Black →
Drop-inThe formatter is designed as a drop-in replacement for Black.
Published benchmarks, each linked to its source. The numbers depend on the hardware and the workload they were measured on.
Formatting the Zulip codebase without caching
~250,000 lines: Ruff 0.10s, Black 3.20s (YAPF 17.77s, autopep8 19.56s).
Black
- 26.10.02026-10-04--line-ranges no longer inserts an empty line after a docstring when the range
- 26.5.12026-05-18Fix unstable formatting of annotated assignments whose subscript annotation contains
- 26.5.02026-05-16Add support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),
- 26.3.12026-03-12Prevent Jupyter notebook magic masking collisions from corrupting cells by using
- 26.3.02026-03-06Don't double-decode input, causing non-UTF-8 files to be corrupted (#4964)
Black
✓ signed The latest release, 26.10.0, carries a signature GitHub verified.
Loading the security report
Ruff
✓ signed The latest release, 0.16.10, carries a signature GitHub verified.
Loading the security report