Free calculator, no signup
Short answer: a Reddit score is upvotes minus downvotes. Enter the score and the upvote ratio, and the calculator solves upvotes = score / (2 x ratio - 1). A 500 point post at 96% had about 543 upvotes and 43 downvotes.
On "how many upvotes to hit Hot": there is no fixed number. In Reddit's archived ranking code, every 12.5 hours of age is worth a 10x score difference, so you only need to beat the posts around you, adjusted for age. The Hot slot helper below does that math.
Old Reddit: Visit old.reddit.com, open any post, and look at the sidebar on the right. The upvote ratio is displayed as a percentage.
New Reddit (desktop): Some posts show the ratio in the post details area below the score.
Reddit API: The upvote_ratio field is available in the API response for any post.
543 upvotes + 43 downvotes = total votes cast on this post
The displayed score on the post, which is upvotes minus downvotes
Almost universally positive. Very few people disagreed with this post. This is typical for highly useful content, guides, or widely appreciated posts.
A 96% ratio (controversy score 8/100) means the community genuinely values what you posted. Keep producing this type of content. Posts like this build trust and karma over time, making future posts more visible.
Scale Your 96% Strategy with MediaFastMediaFast drafts a rule-aware post for the right subreddit and tells you when to publish so the post lands when the community is active.
See when upvote ratios tend to run highest, plus weekly tips for getting more upvotes on your posts. No spam, unsubscribe anytime.
Free. No spam. Unsubscribe in one click.
What to do with this result
The calculator tells you how many upvotes you need. MediaFast picks the subreddit, drafts a post that fits its rules and tells you when to publish, so those early upvotes arrive.
Not sure which one fits? Compare every plan side by side further down this page.
Reddit voting explained
Reddit never shows you the real vote counts. Here is why that matters and how you can estimate the true numbers behind any post.
The number displayed on a Reddit post is the net score (upvotes minus downvotes), not the total upvotes. A post showing 500 points could have 600 upvotes and 100 downvotes, or 5,000 upvotes and 4,500 downvotes. The score alone tells you nothing about total engagement.
Reddit deliberately adds noise to vote counts to prevent manipulation. Every time you refresh, the numbers shift slightly. The upvote ratio (visible on old Reddit) is the most reliable indicator of how a post is performing with real users.
Total engagement (upvotes plus downvotes) reveals how many people interacted with your post. A post with 1,000 total votes and a 55% ratio sparked far more discussion than one with 100 votes at 99%. For marketers, engagement volume is the real metric. Tools like MediaFast find the subreddits and threads where that kind of genuine discussion happens, and you write the replies yourself.
A user casts a vote on your post
When someone upvotes or downvotes your post, Reddit records the real vote internally. The real tallies are stored in Reddit's database but are never exposed directly to users or the API.
Reddit applies vote fuzzing to the displayed count
Before showing vote counts publicly, Reddit adds random offsets. It might add a few fake upvotes and a few fake downvotes simultaneously. The net score stays close to accurate, but the individual counts are deliberately obscured.
The upvote ratio is calculated from real data
Reddit provides the upvote ratio (like 96%) which is derived from real votes, not the fuzzed numbers. This makes it the most trustworthy metric available. Combined with the net score, you can reverse-engineer approximate real vote counts.
The formula reverses the math
Using the relationship: score = upvotes - downvotes, and ratio = upvotes / (upvotes + downvotes), you can solve for upvotes = score / (2 * ratio - 1). This gives you the best possible estimate of the true vote breakdown.
You get estimated real vote counts
This calculator takes your post score and upvote ratio, applies the formula, and shows you estimated upvotes, downvotes, total engagement, and a controversy score. Use these insights to understand how your content performs.
| Upvote ratio | Meaning | Typical use case |
|---|---|---|
| 95-100% | Universally loved. Almost no downvotes. | Helpful guides, cute animals, wholesome content |
| 85-95% | Well received with minor disagreement. | Good discussion posts, product announcements |
| 70-85% | Mixed reception. Noticeable pushback. | Controversial opinions, self-promotion |
| 50-70% | Highly divisive. Community is split. | Political content, heated debates, spam flags |
| Below 50% | More downvotes than upvotes. Rejected. | Off-topic posts, obvious ads, rule-breaking |
How many upvotes to hit Hot
Hot ranks by log10 of net score plus a steady credit for being newer. You are not chasing a number, you are chasing the post in the slot above you.
The archived Hot formula
order = log10(max(abs(score), 1))
sign = 1 if score > 0, -1 if score < 0, else 0
seconds = post_time - 1134028003
hot = round(sign * order + seconds / 45000, 7)From _sorts.pyx in the reddit-archive repository. 45,000 seconds is 12.5 hours, and one point of log10 is a 10x jump in score. So a post needs 10x the net score to match one posted 12.5 hours later.
Hot slot target
12.5 hours = 10x scoreNet score your post needs to tie it on Hot:
120
Your post is 5 hours newer, so it needs fewer points than the 300 the older post has. Based on the archived open-source Hot formula. Today's feeds add personalization on top, so treat this as a baseline.
| Your post is older by | Score multiplier needed | To tie a 100 point newer post |
|---|---|---|
| 30 minutes | 1.10x | 110 net upvotes |
| 1 hour | 1.20x | 120 net upvotes |
| 2 hours | 1.45x | 145 net upvotes |
| 3 hours | 1.74x | 174 net upvotes |
| 6 hours | 3.02x | 302 net upvotes |
| 12.5 hours | 10x | 1,000 net upvotes |
| 24 hours | 83.2x | 8,318 net upvotes |
Computed from the formula above (multiplier = 10 to the power of hours x 3600 / 45000). Illustrative baseline only: today's Reddit feeds are personalized and the live ranking code is private.
The first hours decide most of it. A post with 50 net upvotes that is 5.5 hours newer outranks one with 100, because 5.5 hours of freshness is worth about a 2.8x score edge. Posting when the subreddit is awake, with a title and format that earn early votes, matters more than the final total.
To get those early votes, start with a reddit post template, work through how to get more upvotes on Reddit, and preview Reddit post formatting before you publish. Then use a subreddit finder and a repeatable reddit growth strategy to choose where the next post belongs. If you are promoting a product, the SaaS on Reddit playbook covers the rules-first side.
The evidence
The math behind this calculator is not guesswork. It traces back to Reddit's own open-sourced ranking formulas and the statistics research they are built on.
Reddit's own "best" comment sort code ranks by a Wilson score confidence interval locked to 80% confidence, not a simple average of upvotes to downvotes.
View the source codeIn Reddit's hot-ranking formula, the first 10 upvotes carry the same algorithmic weight as the next 100, which carry the same weight as the next 1,000, because the score is log10'd before ranking.
View the breakdownThe statistical method Reddit adopted for ranking by vote share is designed so a comment with 1 upvote and 0 downvotes cannot outrank one with 200 upvotes and 20 downvotes.
View the research"The first 10 upvotes have the same weight as the next 100 upvotes which have the same weight as the next 1000."
Amir Salihefendic, "How Reddit ranking algorithms work" (2015)
A five minute walkthrough of the scoring and ranking mechanics behind every Reddit post score, the same score this calculator's formula reverses to estimate real upvotes and downvotes.
Upvotes that turned into users
A good ratio is a signal the community trusts you. Here is what that trust turned into for a few founders.
Why the numbers look the way they do
The score you see today is the result of a few public decisions. Knowing them explains why the calculator can only estimate.
Reddit dropped the separate upvote and downvote numbers in June 2014 and showed a percentage instead, on posts and comments. Fuzzing had been making popular posts look roughly 55% liked. Admin Chad Birch explained that accurate counts would expose anti-cheating systems, while fake counts made people draw the wrong conclusions.
The Daily Dot, June 2014In December 2016 admin KeyserSosa announced a streamlined anti-manipulation system, arguing that if 50,000 people upvoted something, the final score should reflect it. Big posts jumped in score overnight, scores over 10,000 started showing a k, and comment scores stayed largely the same.
TechCrunch, December 2016In September 2017 Reddit archived its public source repositories and stopped updating the open-source code, citing competition. The Hot, Controversial and Best formulas on this page come from that archive. They are the last documented version, not a promise of how today's personalized feeds rank posts.
Slashdot, September 2017More coverage of the 2017 change: BetaNews on Reddit ending open-source updates. Because the live code went private, any tool that claims to know the exact upvotes needed for the front page today is guessing.
Score tier reference
Reddit's hot-ranking formula takes log10 of your net score before weighting it against post age. This is illustrative of the formula's math, not a guarantee of front-page placement.
| Net score range | Log10 weight | What it means |
|---|---|---|
| 1 to 9 net upvotes | log10 weight: 0 to 0.95 | Barely registers on Reddit's ranking scale. Time decay dominates completely at this level. |
| 10 to 99 net upvotes | log10 weight: 1 to 1.99 | The same algorithmic jump as the entire 1 to 9 tier combined, because the score is log10'd before ranking. |
| 100 to 999 net upvotes | log10 weight: 2 to 2.99 | Another full jump. The first 10 upvotes carry as much ranking weight as the next 100, per the formula below. |
| 1,000 to 9,999 net upvotes | log10 weight: 3 to 3.99 | Same relative jump again. Most subreddit front-page and r/all-adjacent posts land somewhere in this tier. |
| 10,000+ net upvotes | log10 weight: 4+ | Diminishing algorithmic returns from raw score alone. Early upvote velocity matters more than the final total. |
Tiers derived from the log10-based hot-ranking formula documented in Amir Salihefendic's breakdown of Reddit's ranking algorithms, cross-referenced against Reddit's own open-sourced sorting code in the reddit-archive GitHub repository.
Controversial sort, worked out
Reddit's archived controversy formula raises total votes to the power of how evenly they split. Six worked rows show what that does.
The formula
magnitude = ups + downs
balance = minority / majority
score = magnitude ** balanceAlso from _sorts.pyx. A perfect 50/50 split gives balance 1, so the score equals total votes. A lopsided split crushes it toward 1, no matter how many people voted.
The calculator above shows a simpler 0 to 100 controversy score based only on ratio. Use it to read one post, and this formula to understand what the Controversial tab surfaces.
| Ups | Downs | Magnitude | Balance | Score |
|---|---|---|---|---|
| 100 | 90 | 190 | 0.90 | 112.4 |
| 60 | 40 | 100 | 0.67 | 21.5 |
| 550 | 450 | 1,000 | 0.82 | 284.8 |
| 1,000 | 100 | 1,100 | 0.10 | 2.0 |
| 2,000 | 200 | 2,200 | 0.10 | 2.2 |
| 5,000 | 4,000 | 9,000 | 0.80 | 1,456.8 |
Vote counts are illustrative inputs. Scores are computed with the formula shown and rounded to one decimal.
Decision framework
Score and ratio are only half the picture. Which sort you are looking at changes what the numbers mean.
If you want to know whether a post is trending right now, check Hot, not Top. Hot factors in age decay on top of score, so a post from an hour ago can outrank one from yesterday with a higher total.
If you want the single highest scoring posts, check Top with the right time filter. Top ignores age decay entirely and sorts purely on net score.
If you want to find genuinely divisive threads, check Controversial. Reddit's own controversy formula raises total votes to the power of the minority side divided by the majority side, so it surfaces high-volume, closely-split posts on purpose.
If you want to see what was just posted, check New. It has no score or age weighting at all, it is a pure timestamp sort.
If you are judging a comment thread's credibility, check Best, not raw upvote count on the top comment. Best uses the Wilson score confidence interval, so a comment with 5 upvotes and 0 downvotes can rank above one with 100 upvotes and 40 downvotes.
If a post's ratio looks unusually low for its score, suspect brigading or a divisive topic before assuming your content is simply bad. Compare it against the ratio benchmark table above.
If you are comparing two posts from different subreddits, do not compare net score directly. Normalize by upvote ratio and total vote count instead, since subreddit size alone can swing raw score by orders of magnitude.
Reverse the math by hand
Every row runs the calculator's own formula. Check any of them by moving the sliders above to the same score and ratio.
A clean, well-liked post. The default values in the calculator above.
Same score, nearly 4x the voters. A heated thread hiding behind a modest number.
Typical of a strong post in a mid-size subreddit with some pushback.
Looks like a flop, but almost 300 people voted. The topic split the room.
Extreme case. A small visible score on top of a huge, divided audience.
No downvotes at all, so score and upvotes match exactly.
Illustrative inputs, not real posts. Results rounded to whole votes, the same way the calculator rounds.
Common mistakes
Most misreadings of a post's real reception come from a handful of repeated errors.
Reading the displayed score as total upvotes. The number under a post is the net score (upvotes minus downvotes). This calculator exists specifically to separate those two numbers back out using the score and the upvote ratio.
Assuming a low upvote ratio always means bad content. Reddit's own controversy formula deliberately surfaces high-volume, closely-split threads, per the controversy sort code. A divisive topic can perform well by engagement even at a 60% ratio.
Comparing net score across subreddits of very different sizes. Because the hot-ranking formula log10s the score, per Salihefendic's breakdown, a 200-point post in a small subreddit and a 2,000-point post in a massive one can represent similar relative reception.
Expecting the exact same vote counts on every refresh. Reddit's vote fuzzing intentionally reshuffles small amounts of the displayed count to make manipulation harder to verify, so minor fluctuation between refreshes is normal, not a bug.
Chasing raw upvote count on comments instead of Wilson-scored ranking. Per Evan Miller's ranking research, which Reddit's own code implements, a small comment with a clean ratio can outrank a larger one with more total votes but more disagreement.
Confusing Hot and Top. Hot decays with age on a logarithmic scale, Top does not. A post that was Hot yesterday can drop out of Hot entirely while still sitting at the top of the Top sort.
Do and don't
The difference between reading a post's reception correctly and getting it backwards.
Glossary
The terms this calculator and this page use, defined in one sentence each.
Quick answers
No. It is pure client-side math. You read the score and upvote ratio off any post yourself and type them into the two sliders above. Nothing is fetched from Reddit, no login is required, and nothing you enter is stored.
Slightly, and that is inherent to the problem, not a flaw in the formula. Since Reddit intentionally fuzzes the displayed vote counts, this calculator gives the best mathematically consistent estimate from the two numbers Reddit does expose accurately, the net score and the upvote ratio, not a guaranteed exact count.
Because fuzzing reshuffles a small amount of the displayed count each time the page loads, and because real votes keep coming in between checks. Re-enter the current numbers and the estimate will update accordingly.
Not necessarily. A high controversy score just means the vote split was close to even at real volume. Per Reddit's own controversy formula referenced above, that pattern is common for opinion posts and debate topics, and it often comes with more comments and engagement, not less.
REDDIT MARKETING TOOL PRICING
They are asking for a product like yours on Reddit right now. The only question is whether they find you or your competitor.
Founders already growing with MediaFast
EVERYTHING IN MONTHLY, PLUS
If we can't help you market on Reddit, we'll refund you. No questions asked.
8 answers on Reddit votes, vote fuzzing and what it takes to hit Hot.
Vote fuzzing is a system Reddit uses to confuse bots and prevent vote manipulation. Reddit intentionally adds and removes fake upvotes and downvotes to the displayed count. The net score stays roughly accurate, but the individual upvote and downvote counts are never exact. This is why refreshing a post shows slightly different numbers each time.
The upvote ratio is visible on old Reddit (old.reddit.com) in the sidebar of every post. On new Reddit, you can sometimes see it on desktop by looking at the post details. The ratio represents the percentage of total votes that were upvotes. For example, a 96% upvote ratio means 96 out of every 100 votes were upvotes.
No. The score you see on a Reddit post is the net score, which equals upvotes minus downvotes. A post with 1,000 upvotes and 200 downvotes would show a score of 800. This calculator reverses that math so you can see the estimated real upvote and downvote counts.
Reddit hides exact vote counts to prevent vote manipulation by bots and bad actors. If bots could see exact numbers, they could more easily game the system to push content to the front page or suppress certain posts. The fuzzing system preserves the general direction of voting while making it harder to exploit.
This calculator provides the best possible estimate based on the score and upvote ratio Reddit provides. Because Reddit applies vote fuzzing, no tool can give you the exact counts. However, the formula (upvotes = score / (2 * ratio - 1)) is mathematically derived from how Reddit calculates the displayed score and ratio, making it the most accurate estimate available.
There is no fixed number. In Reddit's archived open-source Hot formula, a post needs a higher combined value than the post currently holding the slot, and that value is log10 of net score plus post age credit. Every 12.5 hours of age difference equals a 10x difference in net score, so a post 6 hours newer needs roughly a third of the older post's score to tie it. Current feeds also personalize results, so treat this as a baseline.
In June 2014 Reddit replaced the separate up and down counts with a percentage liked figure, because the old numbers were fuzzed and misleading. In December 2016 Reddit changed its vote counting so large posts show scores closer to their real participation, with scores over 10,000 shown in k. Individual up and down counts have not come back.
This calculator's controversy score is a simple 0 to 100 measure of how close a ratio is to 50/50. Reddit's archived Controversial sort raises total votes to the power of minority votes divided by majority votes, so it also rewards volume. A 5,000 up and 4,000 down post scores far higher on Reddit's formula than a 100 up and 90 down post, even though both are closely split.
MediaFast finds the communities where your post fits, checks their rules, and drafts it with you. You post and reply yourself.
No time to do Reddit yourself?