Hacker ApprovedDepartments

Ruff

Hacker Approved

The 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%
Each figure is one person. RecommendsCriticizes

Recommended in 11 of 13 months

  1. November 2025: recommended
  2. December 2025: recommended
  3. January 2026: recommended
  4. February 2026: recommended
  5. March 2026: recommended
  6. April 2026: recommended
  7. May 2026: recommended
  8. June 2026: recommended
  9. July 2026: recommended
  10. August 2026: recommended
  11. September 2026: not recommended
  12. October 2026: recommended
  13. 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?”
  • 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”
  • 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”
  • 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”

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”
  • 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.

Ruff compared with 4 alternatives
ProductRecommendCriticizeApprovalMonthsOwnedBadge
RuffThis page1151688%11—Approved
Clippy (Rust linter)583165%12——
ESLint322259%11——
Biome23582%10—Approved
Oxlint20580%7—Approved
See all 14 linters, ranked

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”

RecommendsComment from 24 Oct 2026 in “Bringing uv and ty together”

“The formatter is part of ruff, but uv also have an undocumented "format" command, which does not produce the same results.”

MixedComment from 24 Oct 2026 in “Bringing uv and ty together”

“With agents it is helpful to make them run ruff and mypy to keep them honest”

RecommendsComment from 20 Oct 2026 in “SlopCodeBench 10/2026 – Opus 5.5, Astra wins overall, xhigh considered harmful”

“Nor go back to any of the previous alternatives Astral's products replaced.”

RecommendsComment from 10 Oct 2026 in “Cloudflare acquires Deno”

“Similar to black but faster, written in Rust, by the same team who created uv.”

RecommendsComment from 11 Aug 2026 in “Why Go Is an Ideal Language for AI-Assisted Software Engineering”

“I see a lot less waste of tokens and reasoning retry loops of obvious errors when using Python with uv+ruff”

RecommendsComment from 11 Aug 2026 in “What's the best programming language for coding agents?”

“I've got only 2900 errors -- which weren't errors at all just yesterday”

CriticizesComment from 28 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“find it a handy watermark for when something should be broken up into smaller, individually testable callables”

RecommendsComment from 28 Jul 2026 in “Benchmarking Opus 5 on SlopCodeBench”

“most of the rules are nonsense and the number of rules that makes no sense is growing”

CriticizesComment from 27 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“this change will touch much, much more than that”

CriticizesComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“stick to older ruff until team has resources to fix issues”

CriticizesComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“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.”

CriticizesComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“Compare it to some of the other options in that space and you'll see why that was a selling point.”

RecommendsComment from 26 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”

CriticizesComment 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”

CriticizesComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“It's also truly really fast. On an as-yet un-ruff'ed 32k SLOC python package it returns in 158ms finding 2k errors.”

RecommendsComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“Personally I love this rule because it saves me from looking at one extra commit”

RecommendsComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“the new rules do improve code quality. It caught quite a few things previous versions didn't.”

RecommendsComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“I'm a big fan of the strict by default approach that Ruff and other linters have taken.”

RecommendsComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“getting overrun with "413 x potential warnings" hardly sounds useful”

MixedComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“enabling 413 rules by default means most projects get useful linting without touching the config at all”

RecommendsComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“This is great news! With the advent of agentic coding, strong linting is more important than ever.”

RecommendsComment from 26 Jul 2026 in “Ruff v0.16.0 – Significant new updates – 413 default rules up from 59”

“At the very least you need all the static checking machinery like Ruff, Pyright”

RecommendsComment from 11 Jul 2026 in “Scarf has moved away from Haskell”

“obviously best practice over running AI in a pre-commit hook to do those checks and refactors”

RecommendsComment from 8 Jul 2026 in “Automating AI Away”

“Python has uv, ruff and Pyrefly, and with that combination, has roughly the same agent ergonomics as Go”

RecommendsComment from 8 Jul 2026 in “Why TypeScript 7.0 Was Rewritten in Go”

“with that combination, has roughly the same agent ergonomics as Go and lower token count due to higher abstraction level”

RecommendsComment from 8 Jul 2026 in “Why TypeScript 7.0 Was Rewritten in Go”

“The ruff Python linter caught formatting and lint violations in the malicious code and blocked the CI build”

RecommendsComment from 8 Jun 2026 in “Pythagora-Io/GPT-Pilot Compromised Credential Stealer Blocked by Python Linter”

“astral built a better one, for which I am genuinely grateful to them”

RecommendsComment from 20 Mar 2026 in “Astral to Join OpenAI”

“this news is good enough reason to move from Ruff back to black”

CriticizesComment from 20 Mar 2026 in “Astral to Join OpenAI”

“I will start migrating from uv, ty and ruff first thing this weekend”

CriticizesComment from 19 Mar 2026 in “Astral to Join OpenAI”

“wondering if I can ever work another python project after having experienced uv, ruff, and ty”

RecommendsComment from 19 Mar 2026 in “Astral to Join OpenAI”

“uv and ruff's explosive growth happening alongside and despite that of LLMs demonstrates that it's not a show-stopper”

RecommendsComment from 19 Mar 2026 in “Astral to Join OpenAI”

“all great tools I recently started really using and I couldn't be happier with them”

RecommendsComment from 19 Mar 2026 in “Astral to Join OpenAI”

“I immediately set up up ruff, ty, pytest, pre-commit hook and GH workflow to run ruff/ty/pytest”

RecommendsComment from 28 Jan 2026 in “Notes on Starting to Use Django”

“Both were better in terms of user ergonomics and also much faster that what we used before”

RecommendsComment from 20 Jan 2026 in “Ask HN: What non-LLM tools have meaningfully improved your dev productivity?”

“Stop using flake8 and use ruff instead. It's made by the same folks that make uv.”

RecommendsComment from 27 Dec 2025 in “How uv got so fast”

“replacing a mountain of tools and rules with a single extremely fast linter/formatter”

RecommendsComment from 17 Dec 2025 in “Announcing the Beta release of ty”

“Things improved drastically over the years with Astral's ruff, uv and alpha stage ty.”

RecommendsComment from 26 Nov 2025 in “Python is not a great language for data science”

“can yell at you for having a TODO without an associated link to a ticket, which I greatly appreciate”

RecommendsComment from 8 Nov 2025 in “WriterdeckOS”

“I find the black/ruff formatting style in Python to be very consistent, which helps with git blame.”

RecommendsComment from 4 Nov 2025 in “At the end you use `git bisect`”

Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.