← Back to Tools
—
implied probability
Odds: —
—
What is implied probability?
It's what the odds say the chance of winning is. But the real test:
does your estimate differ? If you think a team has a 60% chance
but the odds only imply 40%, you've found value. That's +EV betting.
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 type = 'american';
document.querySelectorAll('.pill[data-type]').forEach(p => {
p.addEventListener('click', () => {
document.querySelectorAll('.pill[data-type]').forEach(x => x.classList.remove('active'));
p.classList.add('active');
type = p.dataset.type;
});
});
document.querySelectorAll('.pill[data-preset]').forEach(p => {
p.addEventListener('click', () => {
const val = p.dataset.preset === 'evens' ? '100' : p.dataset.preset;
document.getElementById('oddsInput').value = p.dataset.preset === 'evens' ? 'E' : val;
calculate();
});
});
document.getElementById('calcBtn').addEventListener('click', calculate);
document.getElementById('oddsInput').addEventListener('keydown', e => {
if (e.key === 'Enter') calculate();
});
function calculate() {
const raw = document.getElementById('oddsInput').value.trim();
if (!raw) return;
let decimal, american;
const s = raw.toLowerCase();
if (s === 'e' || s === 'even') {
american = 100;
decimal = 2.0;
} else if (type === 'decimal') {
decimal = parseFloat(raw);
american = decimal >= 2 ? (decimal - 1) * 100 : -100 / (decimal - 1);
} else if (type === 'fractional') {
const parts = s.split('/');
if (parts.length === 2) {
const n = parseFloat(parts[0]), d = parseFloat(parts[1]);
decimal = (n / d) + 1;
american = decimal >= 2 ? (decimal - 1) * 100 : -100 / (decimal - 1);
}
} else {
american = parseFloat(raw);
decimal = american >= 0 ? (american / 100) + 1 : (100 / Math.abs(american)) + 1;
}
if (!decimal || isNaN(decimal) || decimal <= 0) return;
const prob = (1 / decimal) * 100;
const amStr = american >= 0 ? '+' + Math.round(american) : String(Math.round(american));
const panel = document.getElementById('resultPanel');
panel.style.display = 'block';
const numEl = document.getElementById('probNum');
numEl.textContent = prob.toFixed(1) + '%';
numEl.className = 'prob-number ' + (prob > 55 ? 'red' : prob > 45 ? 'yellow' : 'green');
document.getElementById('probOdds').innerHTML = 'Odds: