Convert betting formats and calculate potential payouts instantly
/
Potential Profit$0.00
Total Payout$0.00
How to Use the Sports Odds Calculator
Understanding sports betting odds is the first step toward becoming a savvy bettor. Different regions use different formats to express the likelihood of an outcome. This calculator allows you to convert between American, Decimal, and Fractional formats instantly while also showing you the "Implied Probability" of the bet winning.
Common Odds Formats Explained
American Odds (+/-): Popular in the US. Positive numbers show how much profit you make on a $100 bet (e.g., +150 means $150 profit). Negative numbers show how much you must bet to make $100 profit (e.g., -110 means you bet $110 to win $100).
Decimal Odds: Standard in Europe and Australia. They represent the total payout rather than just profit. Formula: Stake × Decimal Odds = Payout.
Fractional Odds: Traditional in the UK. The numerator (top) is the potential profit, and the denominator (bottom) is the amount you must bet.
Implied Probability: This is the percentage chance of an event happening as suggested by the odds. If the implied probability is lower than the actual chance you believe the event has, you have found "value."
Realistic Example
If you see a team at +200 (American):
Decimal: 3.00
Fractional: 2/1
Probability: 33.3%
Profit on $50 bet: $100 (Total Payout $150)
function calculatePayout() {
var dec = parseFloat(document.getElementById('decimalInput').value);
var bet = parseFloat(document.getElementById('betAmount').value);
if (isNaN(dec) || isNaN(bet) || dec -100 && american = 100) {
decimal = (american / 100) + 1;
} else {
decimal = (100 / Math.abs(american)) + 1;
}
updateAllFromDecimal(decimal, 'american');
}
function syncFromDecimal() {
var decimal = parseFloat(document.getElementById('decimalInput').value);
if (isNaN(decimal) || decimal <= 1) return;
updateAllFromDecimal(decimal, 'decimal');
}
function syncFromFractional() {
var num = parseFloat(document.getElementById('fractionalNum').value);
var den = parseFloat(document.getElementById('fractionalDen').value);
if (isNaN(num) || isNaN(den) || den === 0) return;
var decimal = (num / den) + 1;
updateAllFromDecimal(decimal, 'fractional');
}
function syncFromProbability() {
var prob = parseFloat(document.getElementById('probabilityInput').value);
if (isNaN(prob) || prob = 100) return;
var decimal = 100 / prob;
updateAllFromDecimal(decimal, 'prob');
}
function updateAllFromDecimal(dec, source) {
// American
if (source !== 'american') {
var am;
if (dec >= 2.0) {
am = '+' + Math.round((dec – 1) * 100);
} else {
am = Math.round(-100 / (dec – 1));
}
document.getElementById('americanInput').value = am;
}
// Decimal
if (source !== 'decimal') {
document.getElementById('decimalInput').value = dec.toFixed(2);
}
// Probability
if (source !== 'prob') {
document.getElementById('probabilityInput').value = (100 / dec).toFixed(2);
}
// Fractional
if (source !== 'fractional') {
var fraction = decimalToFraction(dec – 1);
document.getElementById('fractionalNum').value = fraction.n;
document.getElementById('fractionalDen').value = fraction.d;
}
calculatePayout();
}
function decimalToFraction(val) {
var tolerance = 1.0E-6;
var h1 = 1; var h2 = 0;
var k1 = 0; var k2 = 1;
var b = val;
do {
var a = Math.floor(b);
var aux = h1; h1 = a * h1 + h2; h2 = aux;
aux = k1; k1 = a * k1 + k2; k2 = aux;
b = 1 / (b – a);
} while (Math.abs(val – h1 / k1) > val * tolerance);
return { n: h1, d: k1 };
}
function clearFields() {
document.getElementById('americanInput').value = ";
document.getElementById('decimalInput').value = ";
document.getElementById('fractionalNum').value = ";
document.getElementById('fractionalDen').value = ";
document.getElementById('probabilityInput').value = ";
document.getElementById('betAmount').value = '100';
document.getElementById('profitDisplay').innerText = '$0.00';
document.getElementById('payoutDisplay').innerText = '$0.00';
}