MATH OF LUCK

Hi-Lo, priced: the exact odds behind every card and every button

Illustration for “Hi-Lo, priced: the exact odds behind every card and every button”
Hi-Lo deals one card drawn uniformly from thirteen ranks, and suits never matter. “Higher or same” on a card of rank r wins (14 − r) times in 13, and “Lower or same” wins r times in 13 — the current rank pays on both sides, which is why the two figures add up to more than one. At an Ace or a King that overlap is split out into a “Same” button worth 1 in 13. The fair price of any call is exactly 13 ÷ (number of winning ranks), and the engine shows that figure floored to two decimals — which is where a surprising share of the cost hides. At the client’s 1% configuration, one call and a cash-out costs 1.00% on the ×12.87 “Same” and 2.15% on the ×1.06 near-certainty — the safest-looking button on the board is the most expensive one. Riding the ladder costs more still: ten straight ×1.08 calls land on ×2.13, arrive 44.91% of the time, and carry a 4.33% house edge. Skipping a card is free, and it changes nothing about the card that follows.
BETKYO RESEARCHPUBLISHED 2026-09-16UPDATED 2026-09-169 MIN READ

What the engine actually deals

Hi-Lo asks one question thirteen ways. A card is on the table; the next card will be higher or lower; call it, and a correct call multiplies the pot and hands you the same question about a new card. There is no shoe to track, no third-card rule, no dealer. That makes it one of the few casino games whose entire price list fits on a single page — and one of the few where reading the code changes what you think the buttons mean.

ENGINE-VERIFIEDhilo/hiloApi.ts:32 — a card’s rank is `Math.floor(rng() * 13) + 1`, one of thirteen equally likely ranks. A suit is drawn alongside it (hiloApi.ts:30–34) but no settlement code ever reads it: the win sets in hiloWinSet() (hiloApi.ts:122–142) are sets of ranks. Two of a kind, flushes and sequences do not exist in this game.

Ranks run Ace low to King high, one through thirteen. Because every card is an independent uniform draw, nothing that has already been dealt changes what comes next — no rank is “used up”, and a run of five low cards does not make a high one due. The history strip along the top of the board is a record, not a forecast.

ENGINE-VERIFIEDhilo/hiloApi.ts:122–142, hiloWinSet(): on a middle rank r, “Higher or same” wins on ranks r through 13 and “Lower or same” wins on ranks 1 through r — the current rank is in both sets. On a King the two buttons become “Same” (rank 13 only) and “Lower or same” (1–12); on an Ace, “Higher or same” (2–13) and “Same” (rank 1 only). hiloOdds() (hiloApi.ts:70–91) prices each button at 1 ÷ its probability, which works out to exactly 13 ÷ (size of the win set).

That shared rank is the first thing worth noticing. On any card from 2 to Queen the two buttons together cover fourteen of the thirteen ranks — 107.69% — because a tie pays on whichever side you took. The house does not keep pushes here, and it does not need to: the price of both buttons is set as if the tie belonged to you, and the edge is taken somewhere else entirely.

Every call, priced

There are only twelve distinct calls in Hi-Lo, not twenty-six. A button is defined entirely by how many of the thirteen ranks win it, and every button on the board is one of the twelve sizes below.

The twelve distinct calls: probability, fair price, and what the button shows
WINNING RANKSCHANCEFAIR ODDSSHOWNLOST TO THE 2DP FLOORWHERE IT APPEARS
17.6923%13.0000×13.00“Same” on an Ace or a King
215.3846%6.5000×6.50Lower on a 2, Higher on a Queen
323.0769%4.3333×4.330.0769%Lower on a 3, Higher on a Jack
430.7692%3.2500×3.25Lower on a 4, Higher on a 10
538.4615%2.6000×2.60Lower on a 5, Higher on a 9
646.1538%2.1667×2.160.3077%Lower on a 6, Higher on an 8
753.8462%1.8571×1.850.3846%Either button on a 7
861.5385%1.6250×1.620.3077%Lower on an 8, Higher on a 6
969.2308%1.4444×1.440.3077%Lower on a 9, Higher on a 5
1076.9231%1.3000×1.30Lower on a 10, Higher on a 4
1184.6154%1.1818×1.180.1538%Lower on a Jack, Higher on a 3
1292.3077%1.0833×1.080.3077%Lower on a Queen or King, Higher on an Ace or 2

Chance is the win-set size over 13. Fair odds is 13 ÷ win-set size, the figure hiloOdds() returns. Shown is that figure after the engine’s two-decimal floor. The fifth column is the share of a stake the floor alone takes on that call, before any configured house edge.

Five of the twelve calls divide cleanly into 13 and lose nothing to rounding: the ×13.00, ×6.50, ×3.25, ×2.60 and ×1.30. The rest are repeating decimals cut off rather than rounded, and the cut always favours the house — a floor, never a nearest. The largest single bite is on a 7, the only card where both buttons are the same call: ×1.8571 becomes ×1.85, and 0.3846% of the stake disappears into the third decimal place.

The floor is not sloppiness. A payout has to be a number the ledger can hold exactly and the verifier can reproduce bit for bit, so the engine rounds once, in one direction, at a fixed place — the same discipline described in one rounding, not many. The cost of that choice is small and it is real, and it belongs in the price list.

Two floors, one edge

A Hi-Lo run does not pay per call. It accumulates. Each correct call multiplies a running product by that call’s stored odds, and the payout you can bank is the product with the house’s cut applied — a cut taken once for the whole run, not once per call.

ENGINE-VERIFIEDhilo/hiloApi.ts:202–203 — `product *= floor2(13 / winSet.size)` on each won call, then `multiplier = floor2(product * ctx.rtp)`. floor2 is `Math.floor(x * 100 + 1e-9) / 100` (_shared/serverMath.ts:12–14). The comment at hiloApi.ts:56–59 records that this mirrors the backend’s BigDecimal arithmetic: each won step’s fair odds are stored floored to two decimals, and the run multiplier is the product of the stored steps times one minus the house edge, floored to two decimals again.

So there are two floors, not one: the per-call floor in the table above, and a second floor on the finished multiplier. Both round down. The house edge itself is configuration rather than code — it arrives with the game’s detail record and the client falls back to a 1% figure if that call fails.

ENGINE-VERIFIED_shared/coinGame.ts:111 — the per-game return is `1 − rtpRes.body.rtp` from the /getGameDetail response, with `0.99` as the client’s fallback (_shared/coinGame.ts:92). The worked example in the Hi-Lo source (hiloApi.ts:63–64) uses 0.985. Both are priced below; the probabilities above hold at any setting.
One call, then cash out: what each button actually returns
SHOWNCHANCEFIRST-CALL PAYOUT AT A 1% SETTINGHOUSE EDGEAT A 1.5% SETTING
×13.007.6923%×12.871.0000%1.5385%
×6.5015.3846%×6.431.0769%1.5385%
×4.3323.0769%×4.281.2308%1.6923%
×3.2530.7692%×3.211.2308%1.5385%
×2.6038.4615%×2.571.1538%1.5385%
×2.1646.1538%×2.131.6923%2.1538%
×1.8553.8462%×1.831.4615%2.0000%
×1.6261.5385%×1.601.5385%2.1538%
×1.4469.2308%×1.421.6923%2.3846%
×1.3076.9231%×1.281.5385%1.5385%
×1.1884.6154%×1.161.8462%1.8462%
×1.0892.3077%×1.062.1538%2.1538%

House edge is the expected loss as a share of the stake for a run of exactly one correct call followed by a cash-out: 1 − chance × payout. The payout column is floor2(floor2(13 ÷ k) × 0.99), the number the button itself shows on the first call of a run.

The button legend is worth reading carefully because of this. On the first call of a run the once-per-run cut lands in the same move, so the display drops — the ×1.08 you would expect reads ×1.06. From the second call onwards the product has already been cut, and the same button reads ×1.08 again. Nothing has changed about your chances; you are looking at two different stages of the same arithmetic.

And here is the result nobody expects. A configured edge of 1% is a target, not an outcome. Because the floors bite hardest on the calls whose fair odds have the ugliest decimals, the real cost of a single call ranges from 1.00% to 2.15% — the house’s take on the near-certain ×1.06 is more than twice its take on the ×12.87 long shot. The safest button on the board is the most expensive one to press.

Which side costs less, card by card

Every card puts two prices in front of you, and they are almost never equal. This is the whole table, at a 1% setting, for a single call followed by a cash-out.

House edge of each button by the card on the table, 1% setting, one call
CARDHIGHER OR SAMELOWER OR SAMECHEAPER SIDE
A×1.08 · 92.31% · 2.1538%“Same” ×13.00 · 7.69% · 1.0000%Lower
2×1.08 · 92.31% · 2.1538%×6.50 · 15.38% · 1.0769%Lower
3×1.18 · 84.62% · 1.8462%×4.33 · 23.08% · 1.2308%Lower
4×1.30 · 76.92% · 1.5385%×3.25 · 30.77% · 1.2308%Lower
5×1.44 · 69.23% · 1.6923%×2.60 · 38.46% · 1.1538%Lower
6×1.62 · 61.54% · 1.5385%×2.16 · 46.15% · 1.6923%Higher
7×1.85 · 53.85% · 1.4615%×1.85 · 53.85% · 1.4615%Identical
8×2.16 · 46.15% · 1.6923%×1.62 · 61.54% · 1.5385%Lower
9×2.60 · 38.46% · 1.1538%×1.44 · 69.23% · 1.6923%Higher
10×3.25 · 30.77% · 1.2308%×1.30 · 76.92% · 1.5385%Higher
J×4.33 · 23.08% · 1.2308%×1.18 · 84.62% · 1.8462%Higher
Q×6.50 · 15.38% · 1.0769%×1.08 · 92.31% · 2.1538%Higher
K“Same” ×13.00 · 7.69% · 1.0000%×1.08 · 92.31% · 2.1538%Higher

Shown odds · chance · house edge on one call and a cash-out. At a 1.5% setting the two exceptions disappear: the less likely side is never the dearer one, though on a 4, 6, 7, 8 and 10 the two sides then cost exactly the same.

The pattern is that the less likely side is almost always the cheaper one, which inverts the instinct the game encourages. Two cards break the rule. On a 6 and on an 8 the more likely side is cheaper, and for no reason in the game’s design. Both calls give up the same 0.3077% at the first floor; it is the second floor, on the finished multiplier, that separates them — ×2.16 against a 1% cut lands on 2.1384 and is cut to ×2.13, losing 0.3928%, while ×1.62 lands on 1.6038 and is cut to ×1.60, losing 0.2369%. On a 7 the question does not arise, since both buttons are the same call.

Average cost of one call over a uniformly random card
HOW THE BUTTON IS CHOSEN1% SETTING1.5% SETTING
Always the cheaper side1.2249%1.6923%
Always the less likely side1.2485%1.6923%
At random, half and half1.5207%1.8639%
Always the more likely side1.7929%2.0355%

Averaged over the thirteen equally likely cards. The spread between the first and last rows — about 0.57 points at a 1% setting — is the entire effect of button choice on a single call.

None of those rows is a positive number for the player, and that is the point. Choosing well in Hi-Lo does not turn the game around; it moves the cost between roughly 1.2% and roughly 1.8% of everything staked. The difference is real and it is worth knowing. It is also smaller than the difference the next section describes.

What riding the ladder costs

The cash-out decision is the game, and it is also where the arithmetic turns. Every additional call multiplies the product by a floored number, so every additional call adds another small cut. The configured edge is charged once; the rounding is charged again and again.

Ten cards, always the ×1.08 button, cash out at the end — 1% setting
CORRECT CALLSCHANCE OF GETTING THEREMULTIPLIERFAIR MULTIPLIERHOUSE EDGE
192.3077%×1.06×1.08332.1538%
378.6527%×1.24×1.27142.4706%
567.0177%×1.45×1.49212.8243%
1044.9137%×2.13×2.22654.3338%
2217.1883%×5.38×5.81797.5268%
318.3632%×10.75×11.957110.0951%
600.8209%×100.24×121.822217.7161%

A run taken entirely on the 92.31% button. “Fair multiplier” is (13 ÷ 12) to the power of the call count — what the same run would pay with no floors and no configured edge. The ten-call row was cross-checked against thirty million simulated runs of the engine’s own demo loop.

Doubling your stake on the safe button takes ten correct calls and arrives a little under half the time, and by then the house’s share has gone from 2.15% to 4.33%. Reaching ×100 takes sixty consecutive correct calls, happens about once in 122 attempts, and costs 17.72% of everything staked. The odds compound honestly as the multiplier climbs; the roundings compound too.

The same climb on the ×1.85 button (a 7, either side) — 1% setting
CORRECT CALLSCHANCEMULTIPLIERHOUSE EDGE
153.8462%×1.831.4615%
315.6122%×6.262.2676%
54.5266%×21.452.9041%
100.2049%×464.894.7430%

Ten correct calls at even-ish odds is about one attempt in 488.

Both tables say the same thing in different currencies. A long run is not a cheaper way to reach a big number than a short one at long odds — it is a more expensive way, because the house takes a slice at every rung. The one exception is the ×13.00 “Same” call: at a 1% setting it is exact at two decimals, so it survives any number of repetitions at the configured edge and nothing more. It also arrives 7.69% of the time.

Skipping, and what it does not do

Hi-Lo has a third button. While a run is live you can skip the card on the table and deal another one without calling it — the pot stands, the multiplier stands, and nothing is risked.

ENGINE-VERIFIEDhilo/hiloGame.tsx:376–377 — the “Skip this card” button is rendered for the whole of a live run, and hiloApi.ts:193–196 shows what it does: a new card is drawn, the pass is counted, and the multiplier, win count and balance are returned unchanged. A skipped card cannot lose the run.

It is genuinely free, and it is genuinely limited in what it buys. Skipping does not improve any call — it replaces one card with another drawn from the same thirteen, so the price list it offers is the same price list. What it lets you do is wait for a card whose cheaper button you prefer, which moves your cost somewhere between the 1.00% of a King’s “Same” call and the 2.15% of the button sitting next to it — and no further. There is no sequence of skips that makes a call in this game cost nothing.

Nor does skipping — or anything else on the board — change what the next card will be. Each card is an independent draw from the same thirteen ranks, so the run of low cards you just skipped past has no bearing on the one coming. That instinct has a name and a long history: the gambler’s fallacy.

The honest summary of Hi-Lo is short. The probabilities are exactly what the buttons imply, the payouts are the fair price rounded down twice, and the cost of playing runs from about 1% on a single well-chosen call to well into double figures on a long climb, depending on which buttons you press and how far you ride. Knowing which is which makes the game cheaper. It does not make it free, and no amount of reading the engine will.

Hi-Lo, every call verifiable
Thirteen ranks, one question, and a price list you can check against the engine
Hilo →
FAQ

What are the odds in the Hi-Lo card game?

Each card is drawn uniformly from thirteen ranks. On a card of rank r, “Higher or same” wins (14 − r) times in 13 and “Lower or same” wins r times in 13 — the current rank pays on both sides. On an Ace or a King one button becomes “Same”, which wins 1 time in 13. Suits are irrelevant to settlement.

What is the house edge in Hi-Lo?

It depends on which button you press. At the client’s 1% configuration, one call followed by a cash-out costs 1.00% on the ×12.87 “Same” and 2.15% on the ×1.06 near-certainty, because the engine floors each payout to two decimals and the floor bites hardest where the fair odds repeat. Pressing buttons at random averages 1.52%.

Why does the Hi-Lo button show ×1.06 and not ×1.08?

The fair price of a 92.31% call is 13 ÷ 12 = 1.0833, which the engine stores as ×1.08. On the first correct call of a run the once-per-run house cut lands in the same move, so the button shows the cut figure, ×1.06. From the second call onwards the same button reads ×1.08 because the cut has already been taken.

Is it better to call the likely side or the long shot in Hi-Lo?

At a 1% setting the less likely side is the cheaper one on ten of the thirteen cards — a 6 and an 8 are the exceptions, and on a 7 both buttons are the same call. The gap is about 0.57 points of house edge between always taking the cheaper side and always taking the more likely one. Neither choice makes the game favourable.

Does a longer Hi-Lo run pay better than cashing out early?

No. Each correct call multiplies the running product by a figure that has been floored to two decimals, so every extra rung adds another small cut. Ten straight ×1.08 calls reach ×2.13 with a 44.91% chance at a 4.33% house edge; sixty reach ×100.24 with a 0.82% chance at 17.72%.

Does skipping a card in Hi-Lo help?

Skipping costs nothing and risks nothing — a new card is dealt, the multiplier and pot stand. But the replacement card comes from the same thirteen ranks and offers the same price list, so skipping only lets you choose which price you pay. It cannot remove the house edge from any call.

SOURCES & REFERENCES
  • Betkyo engine source: hiloWinSet() at hilo/hiloApi.ts:122–142 (which ranks win each button, ties paying both sides, the “Same” buttons on Ace and King) and hiloOdds() at hilo/hiloApi.ts:70–91 (fair odds = 13 ÷ win-set size)
  • Betkyo engine source: uniform rank draw at hilo/hiloApi.ts:32; run accumulation at hilo/hiloApi.ts:202–203 (per-step floor, then floor of product × return); the backend-mirror note at hilo/hiloApi.ts:56–59; the first-call display rule in displayStepOdds() at hilo/hiloApi.ts:65–68; the skip branch at hilo/hiloApi.ts:193–196 and its button at hilo/hiloGame.tsx:376–377
  • Betkyo engine source: floor2() at _shared/serverMath.ts:12–14, and the per-game return read at _shared/coinGame.ts:111 with the 0.99 fallback at _shared/coinGame.ts:92
  • Exact calculations written for this article: enumeration of all twenty-six buttons against the engine’s win sets, both roundings applied in the engine’s order, single-call and multi-call house edges at 1% and 1.5% settings, and a thirty-million-run simulation of the demo loop as a cross-check
THE GAMES IN THIS ARTICLE
Betkyo Research — written by the team that builds these games. Every probability quoted in the Journal is derived from our engine source or a cited reference, never copied from another site. Figures are re-checked whenever the engines change.

18+ · PLAY RESPONSIBLY · THE JOURNAL IS EDITORIAL CONTENT, NOT BETTING ADVICE