126

I really like the new Stack Exchange home page, where certain questions from the Stack Exchange Network are presented, along with a hotness rating that is described as "arbitrary" in its tooltip. Such questions also appear randomly on the sidebar on sites across the network, under the heading "Hot Network Questions".

How do these arbitrary hotness points work, and how are they used to select questions to appear in those lists?

3

3 Answers 3

123
+50

Basically the same formula used to select the questions shown in the "hot" tab on a site.

We have a few tweaks:

  • Successive questions from the same site are penalized by increasing amounts. So, the first question from SO in the list gets multiplied by 1.0, the second by 0.98, the third by 0.96, etc.)

  • Each site is limited to contributing five questions to the list at a time by default.

  • There are per-site adjustments: some sites' questions require higher hotness scores to be selected, some sites are restricted to contributing fewer than the default five at a time, and it's possible for sites to be excluded entirely.

  • The benefit of many answers is capped at 10

  • We only degrade based on question age, and not the last update date on a question, so questions don't pop back up to the top every time they're edited

  • Views are not counted towards the score

  • Questions with no answers are excluded

  • Closed questions are excluded

  • Questions less than eight hours or more than 30 days old are excluded

  • Questions that were already selected to appear on the list more than 72 hours ago are excluded

  • Questions whose titles match a list of blocked keywords are excluded; there is one global list, as well as individual lists on every site

  • Questions whose titles contain MathJax markup are excluded

  • Questions that a local moderator has manually removed from the list are excluded

  • Questions on per-site metas, Meta Stack Exchange, Stack Apps, non-English sites, and private beta sites (including CS50) are excluded

The core of the formula (without the site-based degrading or traffic scaling) is:

(MIN(AnswerCount, 10) * QScore) / 5 + AnswerScore
-------------------------------------------------
         (QAgeInHours + 1) ^ 1.4

(take this with a grain of salt due to the omissions noted above)

Once a question reaches a threshold hotness score, it will be selected to appear on the list. No questions will be selected if the site has already contributed more than its limit of questions. This is recalculated every 15 minutes. The entire list is shown on stackexchange.com, and the results are randomized when displayed on sidebars.

11
  • 5
    gentle 2% penalty for same-site-questions is easily overruled by stuffing more answers into these, as demonstrated by recent example of 4 math questions occupying top of collider. Dropping tiny 2% when QScore is blindly multiplied by AnswerCount straight up to 10 answers looks futile
    – gnat
    Commented Nov 8, 2013 at 10:34
  • "per-site traffic adjustment so SO does not dominate" -- for the record, this is explained in more details in “SO questions are penalized” in the hot list - how does that work, can it be done for other site(s)?
    – gnat
    Commented Mar 24, 2014 at 12:01
  • 2
    Just to be clear: Are downvotes also counted in AnswerScore? Say, if one answer has 20 upvotes and 5 downvotes, would it have a score of 20 or 15? Commented May 18, 2014 at 7:38
  • 3
    @Amal Yes, both scores are equal to upvotes - downvotes (same thing you see next to the post). If one answer has 20 upvotes and 5 downvotes, the score would be 15. Commented May 19, 2014 at 14:14
  • The hotness formula has not changed with today's deployments.
    – Glorfindel Mod
    Commented Mar 11, 2019 at 21:47
  • 1
    @Glorfindel please check the listed items in the answer. They contain several elements outside the scope of the formula, that are relevant. That's why I added the item Questions age out of the list after being on it for 72 hours, that goes well together with others like Questions older than 30 days are excluded and Closed questions are excluded that we can read here. Commented Mar 11, 2019 at 21:53
  • "Questions less than eight hours or more than 30 days old are excluded" .. How can something 30 days old survive the (30*24)^1.4 which would be in the denominator? Is my understanding of how the hours are counted, incorrect? The only way it makes sense to me, is if the hours are counted from when the question is first asked. Commented Jun 24, 2020 at 1:38
  • @user1271772 Yes, hours are counted from when the question is first asked. Commented Jul 13, 2020 at 6:11
  • @Sonic how can anything more than 4 days old ever get on HNQ then? Has it ever happened? Commented Jul 13, 2020 at 14:22
  • Is AnswerScore the average score of answers, or the sum of all answers' scores? (or something else)?
    – stevec
    Commented Oct 9 at 2:06
  • Also, just want to confirm, whether or not the question has an accepted answer makes no difference?
    – stevec
    Commented Oct 9 at 2:07
45

Based on David Fullerton's answer, I've written a simple user script that adds a "hotness" indicator to the question infobar:

Screenshot

To use the script, you'll first need to install a user script manager like Greasemonkey or Tampermonkey for your browser, if you don't have one already. Then click this link, which should prompt you whether you want to install the script or not. (If you don't have a user script manager installed, it will just show you the source code for the script.)

The "hotness percentage" calculated by the script is simply the raw value given by the "core formula" in David Fullerton's answer, times 100%. It does not include the per-site adjustment factors or the cumulative penalty for multiple questions from the same site, and so is not directly comparable across sites or with the "arbitrary hotness points" shown in the tooltips on the SE.com home page.

In practice, it seems that questions on the Hot Network Questions list tend to have hotness values around 20% to 200% or so, whereas most not-so-hot questions tend to score a flat 0%. For a more detailed score, you can hover your mouse over the percentage to see the raw hotness score rounded to 5 significant digits. For example for this question, as of this writing, the raw hotness score is approximately 0.000016216 (although posting this answer should bump it up a little bit).

As of version 0.4, the script will display the hotness percentage with overstrike for questions that are ineligible for Hot Network Questions for some reason that the script can determine (like this one, since it's too old and on a meta site), and will show the specific reasons in the hover tooltip. Note that the script will not check for manual exclusions or previous HNQ appearances, since that information is (as far as I know) not directly available from the question page itself, and it cannot check for blocked title keywords since the blacklist is not public (and can vary between sites). Also as of version 0.4, the script calculates the hotness score for questions less than 8 hours old as if their age was 8 hours, which should give a reasonable estimate of what their hotness will be once they're old enough to become eligible for HNQ (at least as long as their answer count and vote totals don't change too much in the mean time, of course).

14
  • Does MathJax still prevent questions to be HNQ? There is a warning about this.
    – kelalaka
    Commented Jan 27, 2021 at 23:44
  • 2
    @kelalaka: As far as I know, yes, they're still excluded. Which makes sense, seeing as the question titles are shown in the sidebar on (almost) all SE sites, most of which don't run MathJax and would thus show the TeX markup unrendered. Commented Jan 28, 2021 at 0:27
  • Don't know the reason, however, it stopped working.
    – kelalaka
    Commented Jul 9, 2021 at 11:43
  • @kelalaka the DOM changed- so line 23 var infobar = document.querySelector('#question-header + .grid'); no longer finds an element... it could be updated to something like var infobar = document.querySelector('#question-header + div'); to simply find the first <div> after the question header element
    – Sam Onela
    Commented Jul 9, 2021 at 15:52
  • This user script significantly slows down my browsing of SE sites and causes my browser to consume a lot of memory (tested on Chrome and Firefox). Commented Mar 22 at 3:42
  • @galacticninja: That is very unfortunate. And strange. This script does nothing but some very basic UI scraping, math and DOM manipulation, and it only runs once at page load and doesn't stick around. It doesn't make any extra HTTP requests or add any event handlers or timers. I wonder if some other script or extension you have is getting badly confused by the extra "hotness" span injected by this script, because that's the only halfway plausible explanation I can think of for the slowness you report. Commented Mar 22 at 8:24
  • @IlmariKaronen That's possible (conflicting user scripts). I also have a couple of other SE user scripts. I might have to do some more testing. What I did was disable them one by one. Then, I found out that it's this one that slows browsing down. Browsing speed is currently back to normal with all my other user scripts enabled. Commented Mar 22 at 8:49
  • This script is saying that questions that are on the HNQ are ineligible to be on HNQ because they less than 8 hours old (they're not).
    – Starship
    Commented Sep 29 at 20:51
  • @Starship Do you have an example question you could link? I tried checking a bunch of current HNQs but couldn't find any with the problem you describe. (Also, what browser are you using? That might matter if it's a compatibility issue.) Commented Sep 29 at 21:24
  • @IlmariKaronen sure. space.stackexchange.com/questions/67039/… is currently on the HNQ but your script says its ineligible. I'm on chrome. Thank you!
    – Starship
    Commented Sep 29 at 21:29
  • @Starship Hmm, looks fine to me on both Edge and Chrome (both with Win11 and Tampermonkey). I wonder if it's maybe a locale issue. If you hover your mouse over "Asked today" in the infobar (or right-click it and select "Inspect..."; see linked screenshot), what does it show for the date and time? (Also, just to make sure, you are using the latest version 0.4.3 of the user script, right? If you're not sure, try reinstalling it just in case. But unless you installed it more than 2 years ago, you should be good.) Commented Sep 29 at 22:06
  • @IlmariKaronen interestingly enough, the hotness for that in your picture is at 12% while for me it is at 24%. This is very weird? And I installed it like a week ago or something. It shows the correct date and time when I hover over it. Also have the same thing on Edge. And I'm using both Windows 11 and tapermonkey as well.
    – Starship
    Commented Sep 29 at 22:07
  • @Starship Aha... I assume you're in the US, right? Or at least somewhere west of UTC+0. There was apparently a time zone bug in the script, where it would parse the UTC datetime given by SE as a local time in your time zone (because it didn't have a time zone indicator). I wonder if it's always been broken like that or if SE changed the time format at some point. Anyway, I just released version 0.4.4 that fixes the bug (and now shows a hotness of 15% for your example question). Please try reinstalling it from the link above. And thanks for the bug report! Commented Sep 29 at 22:23
  • @IlmariKaronen Yes, I'm in the US (how did you know that?). Thank you. It's fixed. Surprised this got fixed in only 15 minutes though...
    – Starship
    Commented Sep 29 at 23:10
4

The following experiment highlights some of the dangers of using the formula in David Fullerton's answer. First let's make sure the experiment is careful not to be affected by all the caveats mentioned before the formula. I've only considered questions of the following type:

  • It is the only question on a particular site, in the HNQ list (so the "multiple HNQ on same site" penalties don't exist).
  • It is a question that is currently in the HNQ list, so none of the "exclusions" listed in David's answer are relevant.
  • I'm not involving any sites in the list of "known" sites to be limited, but the full list is not public, so any anomalies below can perhaps be blamed on this factor.

Looking at the 7 HNQ at the bottom of rene's web app, we have the following, ordered from highest to lowest in score on rene's app, which gets the data from the source used by the mobile apps to show "hot" questions:

enter image description here

The non-integer numbers in the above screenshot, are the "display score" values, and will be repeated in my last column below, and clicking on the site name will give the specific question that's being discussed:

Site HNQ score (based on formula) HNQ score (from mobile apps)
Cheimstry 0.117 5.03
HSM 0.119 4.87
History 0.115 4.80
DSP 0.134 4.55
UX 0.132 4.45
Cookng 0.126 4.26
Bitcoin 0.136 4.10

Bitcoin has the lowest display score, but the highest score from the formula (perhaps it's one of the "limited" sites that we don't know about). Chemistry has the highest display score, but the second lowest score from the formula (this would mean that at least 5 out of these 7 sites are "limited", but while it makes sense to me why Bitcoin.SE might be limited, I'm a lot more surprised by DSP, UX, and Cooking being limited). 1.5 hours later the list has changed a bit:

enter image description here

Site HNQ score (based on formula) HNQ score (from mobile apps)
Cheimstry 0.098 4.61
HSM 0.115 4.70
History 0.119 4.82
DSP 0.138 4.85
UX 0.116 5.18
Cookng 0.146 4.70
Bitcoin 0.131 Out of the HNQ list!

This again indicates that Bitcoin is "limited". It was not removed by a moderator. Chemistry is now at the bottom in terms of display score and formula score, which means that if 5/7 of these sites are limited, they weren't limited enough to keep Chemistry suppressed in this hour, but were limited enough to be suppressed by Chemistry in the previous hour. Cooking again seems to be quite limited. UX is now highest for display score and third lowest for formula score, which does look like quite the anomaly.

One last screenshot from 30 minutes later shows that UX is now out and it was not removed by a moderator, after having the highest display score in the last screenshot. Chemistry was also anomalously high before sinking to the bottom, so maybe questions get a boost in Display Score when they are on the verge of getting kicked out of the HNQ list:

enter image description here

4
  • 2
    If I may ask, what are you trying to demonstrate through this answer (i.e. what argument are you trying to make)? Also, can you please add some context as to what "here" is in your table headers? (I understand that it's the "hot questions for mobile" list used by the mobile apps to show which questions are "hot", but it would be nice if that were clearly indicated here.) Commented Dec 29, 2020 at 23:29
  • 2
    @SonictheCuriouserHedgehog As for what I'm demonstrating: the formula can lead to rather surprising results (this might have been known, but the extent of how different the results can be, probably wasn't). As for the word "here", if you think you can improve the answer I'd encourage you to edit it. I don't know what's wrong with the way it's currently written. Commented Dec 29, 2020 at 23:32
  • 2
    My two cents: I have no idea what this answer is showing or claiming. Are questions going in the HNQ that shouldn't? Being left out when they shouldn't? Are some site over-represented? If there's a point being made, it's not reaching me and presumably some others too. Simple sentences like "xyz is happening and I don't think it should" instead of getting someone to conclude both those facts from a table would help a lot. Commented Dec 30, 2020 at 14:46
  • 2
    @Kate The top answer gives a formula and some caveats. This answer shows that their formula, combined with all their caveats is still not enough. Even if 5/7 of these sited are limited by a damping factor on their score, that damping factor isn't a constant like people think it is, since it's effect can turn the other way around within 1.5 hours. There might be a boost on a question's score before it leaves the HNQ list, which hasn't been discussed here on the past. Or if the formula and caveats are really all that's supposed to be going on, then there's a bug. Commented Dec 30, 2020 at 14:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .