Skip to main content

evaluateBestHand

Best five of 1–7 cards. Default return is HandEvalResult (rank, rankCategory, strength, kickers). Pass { format: 'slim' } for HandEvalResultSlim (no string rank or kickers).

evaluateBestHand(cards: CardInput, options?: { format?: 'full' | 'slim' }): HandEvalResult | HandEvalResultSlim

Import

const poker = require('poker-calculations');

ESM (Node):

import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const poker = require('poker-calculations');

When to use

Use when you need the made hand at showdown or on a partial board—hand history tools, showdown validators, or comparing seven-card combinations without Monte Carlo noise.

Use { format: 'slim' } when you only need rankCategory and strength for sorting or filtering.

How to use

const hand = poker.evaluateBestHand(['Ah', 'Ac', 'Kd', 'Ks', 'Qh', 'Jc', '2d']);
console.log(hand.rank); // e.g. twoPair (interned string)
console.log(hand.rankCategory); // e.g. 2
console.log(hand.strength); // same encoding as evaluateHandStrength
console.log(hand.kickers); // length 5 — internal tie-break encoding

const slim = poker.evaluateBestHand(['Ah', 'Ac', 'Kd', 'Ks', 'Qh'], { format: 'slim' });
console.log(slim.rankCategory, slim.strength);

Throws if any card is invalid or duplicated. Accepts packed Uint8Array via CardInput — see Card notation.

See also

compareBestHands · evaluateHandCategory · HandEvalResult · Card notation