Poker outs and odds calculator
With 9 outs and 47 unseen cards, the next card completes a flush draw exactly 9 times in 47: enter your outs and the unseen cards to get the exact chance on the next card and by the river, with the odds against. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Outs
- 9
- Unseen
- 47
- Miss
- 38
- Cards to come
- 2
- Next card probability
- 0.1914893617
- Next card percent
- 19.1489361702
Poker outs tell you how many remaining cards complete your draw or improve your made hand. Once you know that count and how many cards are still unseen, the hit probability is pure combinatorics: the chance the next board card is an out equals outs divided by unseen, and the chance you hit by the river with two cards still to come is one minus the chance both remaining cards miss. This calculator turns those two integers into exact fractions, percentages, and optional odds-against figures so you can compare a flush draw on the flop, a gutshot on the turn, or any custom out count without memorizing the rule of two and four.
How outs convert into next-card and river probability
An out is any unseen card that upgrades your current holding into a stronger made hand or completes the draw you are chasing. After the flop in Texas Hold'em you typically hold two hole cards and see three community cards, so forty-seven cards remain unknown if you treat the deck and opponents' cards as a single unseen pool for this simple model. If nine of those cards complete a flush, the probability the turn is a flush card is exactly nine over forty-seven.
The probability you complete by the river, seeing both the turn and the river without replacement, is one minus the chance both cards miss: one minus thirty-eight times thirty-seven divided by forty-seven times forty-six. That is the classical complement formula using combinations: one minus C of miss choose two over C of unseen choose two. When only one card remains, as on the turn looking at the river, the river figure collapses to the single-card ratio.
Zero outs yields zero probability; outs equal to unseen yields certainty on the next card. Fractional outs are rejected because physical cards come in whole counts. Outs greater than unseen is impossible and fails validation rather than inventing a probability above one.
Where poker outs calculators show up in real work
Cash-game and tournament players convert draw strength into fold-equity and pot-odds decisions on every street; an exact next-card and river percentage beats a rough mental rule of two and four when the pot is large or the out count is awkward. Coaches and content creators build drills that ask students to count outs then verify the percentage against a trusted oracle so bad out counting is separated from bad arithmetic.
Solver notebooks and equity libraries still need a lightweight pure function for the classical outs model when full range-versus-range enumeration is overkill for a teaching slide or a mobile helper. Streaming overlays and study apps embed the same two-input form so viewers see nine outs on a flush draw map cleanly to about nineteen percent on the next card and about thirty-five percent by the river with forty-seven unseen.
If you later need exact five-card hand category frequencies such as the chance of being dealt a full house from a shuffled deck, treat that as a separate search intent served by the hand-odds landing rather than overloading this outs-and-odds calculator page.
What you can do with it
Pot-odds decisions on the flop
Convert a nine-out flush draw and forty-seven unseen cards into exact turn and river hit percentages before calling a bet.
Coaching drills and quizzes
Generate answer keys for out-counting homework so students check arithmetic against one deterministic oracle.
Study apps and equity tables
Bulk-produce next-card and river probabilities for common out counts without embedding ad-hoc formula code in every client.
FAQ
What is an out in poker?
An out is an unseen card that improves your hand to the draw or made hand you are chasing. Count distinct improving cards carefully so the same card is not counted twice.
How is next-card probability calculated?
Exactly outs divided by unseen. With 9 outs and 47 unseen cards, the next card hits with probability 9/47 ≈ 19.15%.
How is river probability calculated?
With two cards still to come: 1 − C(unseen−outs, 2) / C(unseen, 2). With only one card left, river equals the next-card probability.
What if outs is greater than unseen?
You cannot have more improving cards than cards left; the calculator refuses impossible counts instead of returning a probability above one.
What does it cost?
The browser tool is free and runs locally.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/hobby/poker-odds \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"outs":9,"unseen":47}'const res = await fetch("https://api.kit.forhosting.com/hobby/poker-odds", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"outs": 9,
"unseen": 47
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/poker-odds",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"outs": 9,
"unseen": 47
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/poker-odds", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"outs":9,"unseen":47}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"outs":9,"unseen":47}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/poker-odds", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"outs": 9,
"unseen": 47
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.poker_odds",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
What you send and what you get back
Send two required integer fields. Classic textbook values include nine for a nut flush draw, eight for an open-ended straight draw, four for a gutshot, two for a pocket pair set-mining to a specific rank, and fifteen for a combined straight-plus-flush draw when the outs are counted without double-counting the same card. After a standard flop with two hole cards dealt, forty-seven is the usual default; after the turn, forty-six. Both fields must be integers within a fifty-two-card deck bound. Formula and method fields document the exact model. The field outs is a non-negative whole number of improving cards, with aliases out, outs_count, cards_out, and improving_cards. The field unseen is a positive whole number of remaining unknown cards, with aliases remaining, remaining_cards, deck_remaining, unseen_cards, cards_left, and n. Missing fields, non-integers, negative values, unseen of zero, outs above fifty-two, unseen above fifty-two, and especially outs that exceed unseen fail with invalid_input and are not charged. On success the response echoes outs, unseen, miss equals unseen minus outs, and cards_to_come of one or two. It returns next_card_probability and next_card_percent, river_probability and river_percent, optional odds_against_next and odds_against_river when defined, plus the informal rule_of_2_percent and rule_of_4_percent approximations players memorize for table speed. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where poker outs calculators show up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.