The ranking algorithm

The Hot ranking is a modified Hacker News score. This page is the source of truth: the formula, the inputs, and a changelog of any parameter change.

The formula

For a post or comment with a vote score S and age in hours t:

rank_score = (max(S − 1, 0) ^ p) / ((t + 2) ^ g) × multipliers

Defaults: p = 0.8 (score exponent), g = 1.5 (gravity). Both are tunable per environment without a code change.

Every vote counts as ±1. We don't weight votes by trust tier or anything else — one account, one vote.

Multipliers

The base score is then multiplied by, in order:

  • Soft-hide: 0.5× when a moderator marks a post low-quality but not removable. Post stays visible, ranks lower.
  • Duplicate-warned: 0.6× when the author submitted a link that had already been posted and chose to post it anyway. Near-duplicate fingerprint matches are flagged for human review instead of penalized automatically.
  • Brigade dampening: 0.5× for 24 hours, set when a burst of same-direction votes arrives from very new accounts within a short window. The detector stays disarmed until the site has an established base of older accounts, since "new account" carries no signal while every account is new.

Comments use the same formula and exponents but skip every multiplier. Only score and age feed the comment rank.

When ranks are recomputed

rank_score is recomputed by a scheduled job — every five minutes for items under 24 hours old, every thirty minutes from 24 hours to 7 days. After 7 days the score is frozen. Vote counts themselves are aggregated within a few seconds of each vote.

Parameter changelog

Any change to the formula, exponents, or multipliers is logged here.

  • 2026-07-25 — Near-duplicate fingerprint matches now flag for human review instead of auto-applying the 0.6× duplicate multiplier (which still applies to acknowledged link reposts). Brigade detector disarmed until the site has an established account base.
  • 2026-05-07 — Initial implementation.