← Back to Tools
Calculator

Parlay Calculator

Calculate combined odds & potential payout

Shield
1
2

For informational purposes only. Not legal gambling advice. Must be 21+ in your jurisdiction.
Gamble responsibly. If you or someone you know has a gambling problem, call 1-800-522-4700.

// Calculator let legCount = 2; function addLeg() { if (legCount >= 10) return; legCount++; const container = document.getElementById('legsContainer'); const row = document.createElement('div'); row.className = 'leg-row'; row.innerHTML = ` ${legCount} `; container.appendChild(row); updateLegNumbers(); } function removeLeg(btn) { if (legCount <= 2) return; btn.parentElement.remove(); legCount--; updateLegNumbers(); } function updateLegNumbers() { const rows = document.querySelectorAll('.leg-row'); rows.forEach((row, i) => { row.querySelector('.leg-num').textContent = i + 1; }); } function americanToDecimal(american) { const odds = parseFloat(american); if (isNaN(odds) || odds === 0) return 0; if (odds > 0) return (odds / 100) + 1; return (100 / Math.abs(odds)) + 1; } function decimalToAmerican(decimal) { if (decimal >= 2) return '+' + Math.round((decimal - 1) * 100); return '-' + Math.round(100 / (decimal - 1)); } function calculate() { const betAmount = parseFloat(document.getElementById('betAmount').value) || 10; const inputs = document.querySelectorAll('.leg-input'); let combinedDecimal = 1; for (const input of inputs) { const odds = parseFloat(input.value); if (isNaN(odds)) return; combinedDecimal *= americanToDecimal(odds); } const americanOdds = decimalToAmerican(combinedDecimal); const impliedProb = (1 / combinedDecimal) * 100; const payout = betAmount * combinedDecimal; const profit = payout - betAmount; document.getElementById('decimalOdds').textContent = combinedDecimal.toFixed(2); document.getElementById('americanOdds').textContent = americanOdds; document.getElementById('impliedProb').textContent = impliedProb.toFixed(2) + '%'; document.getElementById('payout').textContent = '$' + payout.toFixed(2); document.getElementById('profit').textContent = '$' + profit.toFixed(2); // Calculate house edge // Assumes each leg has 50% true probability // True parlay probability = 0.5^n // Sportsbook implied probability = 1 / combinedDecimal // House edge = (implied - true) / implied * 100 const numLegs = inputs.length; const trueProbability = Math.pow(0.5, numLegs); const impliedProbVal = 1 / combinedDecimal; const houseEdge = ((impliedProbVal - trueProbability) / impliedProbVal * 100).toFixed(1); document.getElementById('houseEdge').textContent = houseEdge + '%'; document.getElementById('results').classList.remove('hidden'); // Increment smart bets counter if (window.incrementSmartBets) window.incrementSmartBets(); } // Auto-calculate on input change document.addEventListener('input', (e) => { if (e.target.classList.contains('leg-input') || e.target.id === 'betAmount') { calculate(); } });