Ruff
Hacker ApprovedThe most recommended of 14 linters
A very fast Python linter and formatter that replaces flake8, black and similar tools and keeps AI coding agents honest; critics say new default rules cause upgrade churn.
A very fast Python linter and formatter that replaces flake8, black and similar tools and keeps AI coding agents honest; critics say new default rules cause upgrade churn.
131 people gave an opinion
- recommend it
- 115
- criticize it
- 16
- approval share
- 88%
Recommended in 11 of 13 months
- November 2025: recommended
- December 2025: recommended
- January 2026: recommended
- February 2026: recommended
- March 2026: recommended
- April 2026: recommended
- May 2026: recommended
- June 2026: recommended
- July 2026: recommended
- August 2026: recommended
- September 2026: not recommended
- October 2026: recommended
- November 2026: not recommended (month in progress)
Why it carries the badge
- 115 people recommend itNeeds 10 or more, met.
- 7.2 recommenders for every criticNeeds 2 to 1 or better, met.
- Recommended in 11 of 13 monthsNeeds 4 or more, met.
The same three rules apply to every product, and the badge can’t be bought. How the badge works
What people say about it
The reasons people give, with the number of comments that give each one. Open a reason to read what they said.
Why people recommend it
Each mark is one comment
Extremely fast
“It's also truly really fast. On an as-yet un-ruff'ed 32k SLOC python package it returns in 158ms finding 2k errors.”
Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” “uv and ruff took over because they were in many ways simpler and much faster than the competition”
Comment from 24 Oct 2026 in “Bringing uv and ty together” “Both were better in terms of user ergonomics and also much faster that what we used before”
Comment from 20 Jan 2026 in “Ask HN: What non-LLM tools have meaningfully improved your dev productivity?” - Comment from 17 Dec 2025 in “Announcing the Beta release of ty”
- Comment from 11 Aug 2026 in “Why Go Is an Ideal Language for AI-Assisted Software Engineering”
Replaces many older Python tools
“replacing a mountain of tools and rules with a single extremely fast linter/formatter”
Comment from 17 Dec 2025 in “Announcing the Beta release of ty” “Stop using flake8 and use ruff instead. It's made by the same folks that make uv.”
Comment from 27 Dec 2025 in “How uv got so fast” “Similar to black but faster, written in Rust, by the same team who created uv.”
Comment from 11 Aug 2026 in “Why Go Is an Ideal Language for AI-Assisted Software Engineering” - Comment from 10 Oct 2026 in “Cloudflare acquires Deno”
- Comment from 20 Mar 2026 in “Astral to Join OpenAI”
Keeps AI coding agents honest
“with that combination, has roughly the same agent ergonomics as Go and lower token count due to higher abstraction level”
Comment from 8 Jul 2026 in “Why TypeScript 7.0 Was Rewritten in Go” “I see a lot less waste of tokens and reasoning retry loops of obvious errors when using Python with uv+ruff”
Comment from 11 Aug 2026 in “What's the best programming language for coding agents?” “Python has uv, ruff and Pyrefly, and with that combination, has roughly the same agent ergonomics as Go”
Comment from 8 Jul 2026 in “Why TypeScript 7.0 Was Rewritten in Go” - Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”
- Comment from 20 Oct 2026 in “SlopCodeBench 10/2026 – Opus 5.5, Astra wins overall, xhigh considered harmful”
Strict defaults catch real issues
“enabling 413 rules by default means most projects get useful linting without touching the config at all”
Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” “can yell at you for having a TODO without an associated link to a ticket, which I greatly appreciate”
Comment from 8 Nov 2025 in “WriterdeckOS” “the new rules do improve code quality. It caught quite a few things previous versions didn't.”
Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” - Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”
What people warn about
Each mark is one comment
New default rules force churn
“You will probably have to do it all over again when these guys release even newer and shinier 0.17.0, with even more rules.”
Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” “every version introducing a bunch of new default rules which you then have to deal with immediately”
Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” “I've got only 2900 errors -- which weren't errors at all just yesterday”
Comment from 28 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” - Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”
- Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”
Many rules noisy or pointless
“getting overrun with "413 x potential warnings" hardly sounds useful”
Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” “most of the rules are nonsense and the number of rules that makes no sense is growing”
Comment from 27 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” “the bot force worse linting decisions, and even pushes towards more bugs”
Comment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59” OpenAI acquisition prompts migration
“I will start migrating from uv, ty and ruff first thing this weekend”
Comment from 19 Mar 2026 in “Astral to Join OpenAI” “this news is good enough reason to move from Ruff back to black”
Comment from 20 Mar 2026 in “Astral to Join OpenAI”
Other linters people recommend
The four most recommended other linters, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.
| Product | Recommend | Criticize | Approval | Months | Owned | Badge |
|---|---|---|---|---|---|---|
| RuffThis page | 115 | 16 | 88% | 11 | — | Approved |
| Clippy (Rust linter) | 58 | 31 | 65% | 12 | — | — |
| ESLint | 32 | 22 | 59% | 11 | — | — |
| Biome | 23 | 5 | 82% | 10 | — | Approved |
| Oxlint | 20 | 5 | 80% | 7 | — | Approved |
What people said
40 of the 151 comments that mention it, newest first. Each links to the original comment.
“uv and ruff took over because they were in many ways simpler and much faster than the competition”
“The formatter is part of ruff, but uv also have an undocumented "format" command, which does not produce the same results.”
“With agents it is helpful to make them run ruff and mypy to keep them honest”
“Nor go back to any of the previous alternatives Astral's products replaced.”
“Similar to black but faster, written in Rust, by the same team who created uv.”
“I see a lot less waste of tokens and reasoning retry loops of obvious errors when using Python with uv+ruff”
“I've got only 2900 errors -- which weren't errors at all just yesterday”
“find it a handy watermark for when something should be broken up into smaller, individually testable callables”
“most of the rules are nonsense and the number of rules that makes no sense is growing”
“this change will touch much, much more than that”
“stick to older ruff until team has resources to fix issues”
“You will probably have to do it all over again when these guys release even newer and shinier 0.17.0, with even more rules.”
“Compare it to some of the other options in that space and you'll see why that was a selling point.”
“the bot force worse linting decisions, and even pushes towards more bugs”
“every version introducing a bunch of new default rules which you then have to deal with immediately”
“It's also truly really fast. On an as-yet un-ruff'ed 32k SLOC python package it returns in 158ms finding 2k errors.”
“Personally I love this rule because it saves me from looking at one extra commit”
“the new rules do improve code quality. It caught quite a few things previous versions didn't.”
“I'm a big fan of the strict by default approach that Ruff and other linters have taken.”
“getting overrun with "413 x potential warnings" hardly sounds useful”
“enabling 413 rules by default means most projects get useful linting without touching the config at all”
“This is great news! With the advent of agentic coding, strong linting is more important than ever.”
“At the very least you need all the static checking machinery like Ruff, Pyright”
“obviously best practice over running AI in a pre-commit hook to do those checks and refactors”
“Python has uv, ruff and Pyrefly, and with that combination, has roughly the same agent ergonomics as Go”
“with that combination, has roughly the same agent ergonomics as Go and lower token count due to higher abstraction level”
“The ruff Python linter caught formatting and lint violations in the malicious code and blocked the CI build”
“astral built a better one, for which I am genuinely grateful to them”
“this news is good enough reason to move from Ruff back to black”
“I will start migrating from uv, ty and ruff first thing this weekend”
“wondering if I can ever work another python project after having experienced uv, ruff, and ty”
“uv and ruff's explosive growth happening alongside and despite that of LLMs demonstrates that it's not a show-stopper”
“all great tools I recently started really using and I couldn't be happier with them”
“I immediately set up up ruff, ty, pytest, pre-commit hook and GH workflow to run ruff/ty/pytest”
“Both were better in terms of user ergonomics and also much faster that what we used before”
“Stop using flake8 and use ruff instead. It's made by the same folks that make uv.”
“replacing a mountain of tools and rules with a single extremely fast linter/formatter”
“Things improved drastically over the years with Astral's ruff, uv and alpha stage ty.”
“can yell at you for having a TODO without an associated link to a ticket, which I greatly appreciate”
“I find the black/ruff formatting style in Python to be very consistent, which helps with git blame.”
Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.