The Reddit 12.5-hour time decay rule, explained
Reddit's hot formula subtracts the equivalent of 10× your vote score every 12.5 hours. Here is where the 45000 constant comes from and what it means for scheduling.
Originally published April 16, 2026
Reddit's hot formula subtracts the equivalent of 10× your vote score every 12.5 hours. Here is where the 45000 constant comes from and what it means for scheduling.
Reddit's hot sort adds
seconds / 45000to alog10(score)term, which means every 12.5 hours of age cancels exactly one 10× advantage in vote score.The
45000constant comes from the 2017 archived_sorts.pyxsource. No public update has shipped since, and third-party tools still model the live/hotendpoint with the same number.The first 60 minutes are the only window where votes carry more order-term weight than the decay they have already absorbed.
Front-loaded vote drops mirror organic velocity; mid-day "rescue" drops fight a rising time penalty and rarely recover hot-sort position.
Signals runs an aged Reddit account marketplace plus an editorial network for AI brand mentions across Reddit, Quora, Product Hunt, and Threads. Every Reddit campaign we ship is paced against the 12.5-hour decay constant.
Every Reddit operator hears the same line: "the first hour is everything." That is true, but it is downstream of a more specific mechanic. Reddit's hot sort applies a fixed time penalty of 45,000 seconds (exactly 12.5 hours) for every one-log10 step in vote differential. Read backwards, it means every 12.5 hours of age subtracts the equivalent of a 10× improvement in your score. That is why a post with 2,000 upvotes from yesterday gets buried under a post with 200 upvotes from this morning.
We run thousands of Reddit campaigns every year, and most of our scheduling work is downstream of this single constant. The operators who internalize 12.5 hours stop asking "why isn't my old post still on hot" and start asking "what is my 12.5-hour window." This piece walks through where the number comes from, what it does to the ranking math, and how to use it deliberately in 2026 instead of fighting it.
45,000s (reddit-archive sorts.pyx) The exact age penalty per log-step. Divide by 3,600 to get 12.5 hours.
10× (Reddit hot formula) Vote-score advantage needed to offset one 12.5-hour age gap.
62h (Built On Facts, 2013) How long a 100,000-upvote post can survive decay before age erases the order bonus.
Where the 12.5 hours actually comes from
The 12.5 hours is the constant 45000 in Reddit's archived _sorts.pyx file, divided by 3,600 seconds per hour. The file is the last public version of Reddit's sort logic before the 2017 reddit-archive freeze, and the constant appears inside the hot() function's seconds / 45000 term. No derivation is in the source code itself; the team set it by fiat. Evan Miller's 2016 derivation reverse-engineers it from expected-utility theory and arrives at an implied reload cadence of roughly once every 5.43 hours, close enough that 12.5 hours per log-step is a reasonable attention-half-life.
The point is not that 45000 is sacred. The point is that it is load-bearing. Every scheduling heuristic about Reddit traces back to this one constant. Once you know where 12.5 hours comes from, you stop treating it as folklore.
The exact hot formula, in plain English
The hot score from Reddit's own source is one line: round(sign * log10(max(abs(score), 1)) + seconds / 45000, 7). Score is ups - downs, seconds is the submission time minus the 1134028003 epoch, which resolves to December 8, 2005 at 17 UTC and sits close to Reddit's public launch. Every post gets a monotonically increasing time term, and a logarithmic vote term whose sign follows the score. The sort is descending, so higher numbers win.
Two properties fall out immediately. First, time always wins eventually, because the seconds term keeps growing while the log term saturates. Second, votes matter on a log10 scale, so each decade of score (1 → 10 → 100 → 1,000) adds exactly +1 to the order term. Those two facts, together, are the entire algorithm.
Why 10× the votes equals exactly one 12.5-hour step
Because the vote term is log10(score) and the time term is seconds / 45000, a post needs 10× the score of a competitor to offset every 45,000-second age gap, which works out to exactly 12.5 hours. That is the meaning of the famous "upvotes are time travel" framing from Built On Facts' 2013 analysis: a newer post with 200 upvotes and a 12-hour-old post with 2,000 upvotes are roughly tied on the hot sort. A 20,000-upvote post from yesterday has the same hot score as a 200-upvote post from today.
Redditors feel this as "why does the front page churn so fast." Operators should feel it as a ceiling: no amount of late-breaking votes saves a post that missed its window. Once a post is 24 hours old, the equivalent of a 100× vote advantage has silently burned off.
Is the hot sort even relevant in 2026 after the Best rollout?
Yes, with caveats. Reddit's mobile home feed has defaulted to the personalized Best sort since the 2020 ML rollout, which layers user-specific signals on top of the hot score. But subreddit front pages, the /r/\<sub>/hot endpoint, the /.json listings that third-party tools read, and the community rails inside subreddits still use hot as the canonical ranking. The same is true for crossposts ranked inside each sub. That means any time you are posting into a specific subreddit (which is almost every operator workflow), 12.5-hour decay is still the governing clock.
The Best sort adds a personalization layer; it does not replace the time penalty underneath. If your post tanks on its subreddit hot page, Best cannot rescue it, because Best is built on top of the per-subreddit signal that already decided the post is cold.
The first 60–90 minutes are the 12.5-hour window's down payment
A post with 0 upvotes at minute 60 is already roughly 0.08 log10 behind a post that gained 10 early upvotes, which is the equivalent of being submitted about an hour later. That sounds small, but Reddit's hot page only shows the top ~100 submissions in a sub at any time. In a mid-sized subreddit that sees 200+ new posts a day, that hour of implicit age is enough to slip past the fold. MediaFast's 2026 breakdown of Reddit virality models this as a 50-upvotes-in-the-first-hour threshold beating a 200-upvotes-over-24-hours accumulator on hot score.
This is why the first-60-minutes playbook exists: the early votes are the only votes whose effective time advantage is still greater than the decay they have absorbed. We cover the minute-by-minute tactics in our Reddit marketing guide, but the 12.5-hour math is the reason the 60-minute window matters at all.
How to use 12.5-hour decay deliberately (scheduling protocol)
Work backwards from the 12.5-hour mark to where your target subreddit's attention sits. If r/SaaS peaks at 9–11 AM EST on Tuesday–Thursday, post at 7–8 AM EST so your first 60 minutes line up with the audience climb, not the empty pre-peak. For globally active subs (r/CryptoCurrency, r/gaming, r/AskReddit), the window is wider but the constant is unchanged: the post needs to earn its first log-step of votes before half a decay cycle elapses.
The operator move is to treat 12.5 hours as a one-way fuse. Do not "save" posts for later when you realize the early window was weak; resubmit after a 24-hour gap with a different angle. Reddit's own algorithm changelog shows the team actively patching the hot function in 2012 to clean up the sign logic; the decay structure itself has never been the bug they were fixing.
What 12.5-hour decay means for buying upvotes responsibly
The math dictates the pacing. Vote drops that arrive in the first 60 minutes multiply through the log term before decay absorbs them. Drops that arrive hours later are working against a rising time penalty and deliver a fraction of the hot-score lift for the same cost. Any vote provider that delivers a bulk spike in hour 6 is selling math that does not work: the post is already 0.48 log10 points of age into its decay, and the incremental votes only help if they push the post past that entire discount.
A real operator-grade campaign releases votes in a shape that mirrors organic velocity: front-loaded in the first hour, tapering through hours 2–3. That is exactly what we ship when a client books a Reddit upvote campaign with us; it is also what a DIY operator can replicate by rallying a Discord or a newsletter list in the post-submission minutes rather than the afternoon. If you want a deeper decode of the surrounding vote-fuzzing and shadowban signals that interact with decay, our Reddit algorithm primer has the per-signal breakdown.
FAQ
The _sorts.pyx constant 45000 last shipped in the open-source reddit-archive repo in 2017, and Reddit has not published an updated hot formula since. Third-party observers and community tools (Reveddit, clux/decay, RedditMetis) all model hot using the same constant, and the behavior of the /hot endpoint on subreddit pages still matches the log10 + 12.5-hour pattern. Treat it as current until Reddit publishes otherwise.
No. Comments use the Wilson score confidence sort by default, not hot. That sort is based on a binomial confidence interval on upvote percentage and does not depend on submission time. The time penalty we are describing only applies to post ranking, not comment ranking.
A very old post with an enormous score can survive decay if its log term is large enough relative to neighboring posts. A 100,000-upvote post has a +5 order bonus; decay subtracts roughly +1.92 per 24 hours, so it takes about 62 hours for age to erase the entire order advantage. Outside of viral mega-threads, almost no post carries enough score to pay that rent.
Yes, because the sign on the order term flips negative, which stacks with the time term to push the post down faster. A post with a negative score actively hurts its own position relative to a zero-vote post of the same age. This is why bad early engagement is worse than no engagement.
You can improve the absolute score, but you cannot recover the hot-sort position, because the time term is already baked in. The later you buy, the more log10 steps the votes have to make up just to offset elapsed age. This is the operational reason our team front-loads delivery windows and will not pitch a mid-day vote drop as a "fix" for a dead morning launch.
Append .json to any subreddit's /hot URL (for example, reddit.com/r/SaaS/hot.json) and inspect the created_utc and score fields in the response. Sort the top 25 by score-per-hour-since-submission and the curve of hot posts will match the log10 + 12.5-hour model almost exactly. It is the fastest way to confirm the formula is still live in your target sub.