Compare the Net Run Rate performance between two teams or track the gap required to overtake a rival in tournament standings.
Team 1 Performance
Team 2 Performance
Results
What is Net Run Rate (NRR) Difference?
In cricket tournaments, Net Run Rate (NRR) is the primary tie-breaker when teams are level on points. The NRR difference determines how far ahead or behind one team is compared to another. This calculator helps you analyze the margin by which a team is leading or trailing in the statistical standings.
The NRR Formula
The standard formula used by the ICC and major leagues like the IPL is:
NRR = (Total Runs Scored / Total Overs Faced) – (Total Runs Conceded / Total Overs Bowled)
Important Rules for Calculation
All Out: If a team is bowled out before completing their full quota of overs (e.g., all out in 18.2 overs in a 20-over match), the calculation uses the full quota of overs (20.0) for the "Overs Faced" variable.
Overs Notation: Cricket overs are entered in decimal format where .1, .2, .3, .4, and .5 represent the number of balls. Our calculator automatically converts these (e.g., 20.3 overs becomes 20.5 decimal overs) for precision.
Rain Affected Matches: In DLS-affected matches, the revised targets and revised overs are used for calculation purposes.
Example Calculation
Suppose Team A has scored 800 runs in 100 overs and conceded 750 runs in 100 overs.
Team A Runs per Over Scored: 800 / 100 = 8.00
Team A Runs per Over Conceded: 750 / 100 = 7.50
Team A NRR: 8.00 – 7.50 = +0.500
If Team B has an NRR of +0.200, the NRR Difference is 0.300 in favor of Team A.
function convertOversToDecimal(overs) {
var fullOvers = Math.floor(overs);
var balls = Math.round((overs – fullOvers) * 10);
if (balls >= 6) {
// Handle edge case where user enters .6 or higher
return fullOvers + 1;
}
return fullOvers + (balls / 6);
}
function calculateNRRDiff() {
// Team 1 Inputs
var t1RS = parseFloat(document.getElementById('t1RunsScored').value);
var t1OF = parseFloat(document.getElementById('t1OversFaced').value);
var t1RC = parseFloat(document.getElementById('t1RunsConceded').value);
var t1OB = parseFloat(document.getElementById('t1OversBowled').value);
// Team 2 Inputs
var t2RS = parseFloat(document.getElementById('t2RunsScored').value);
var t2OF = parseFloat(document.getElementById('t2OversFaced').value);
var t2RC = parseFloat(document.getElementById('t2RunsConceded').value);
var t2OB = parseFloat(document.getElementById('t2OversBowled').value);
var display = document.getElementById('nrrResultDisplay');
if (isNaN(t1RS) || isNaN(t1OF) || isNaN(t1RC) || isNaN(t1OB) ||
isNaN(t2RS) || isNaN(t2OF) || isNaN(t2RC) || isNaN(t2OB)) {
alert("Please fill in all fields with valid numbers.");
return;
}
if (t1OF === 0 || t1OB === 0 || t2OF === 0 || t2OB === 0) {
alert("Overs cannot be zero.");
return;
}
// Convert overs to decimal for T1
var t1OF_dec = convertOversToDecimal(t1OF);
var t1OB_dec = convertOversToDecimal(t1OB);
// Convert overs to decimal for T2
var t2OF_dec = convertOversToDecimal(t2OF);
var t2OB_dec = convertOversToDecimal(t2OB);
// Calculate NRR
var nrr1 = (t1RS / t1OF_dec) – (t1RC / t1OB_dec);
var nrr2 = (t2RS / t2OF_dec) – (t2RC / t2OB_dec);
var diff = nrr1 – nrr2;
// Display Logic
display.style.display = 'block';
document.getElementById('t1Stat').innerHTML = "Team 1 NRR: " + nrr1.toFixed(3);
document.getElementById('t2Stat').innerHTML = "Team 2 NRR: " + nrr2.toFixed(3);
var diffText = diff >= 0 ? "Team 1 leads by " + diff.toFixed(3) : "Team 2 leads by " + Math.abs(diff).toFixed(3);
document.getElementById('diffStat').innerHTML = "Net Difference: " + diff.toFixed(3) + " (" + diffText + ")";
// Style based on winner
display.className = "nrr-result";
if (diff > 0) {
display.classList.add("nrr-pos");
} else if (diff < 0) {
display.classList.add("nrr-neg");
} else {
display.classList.add("nrr-neutral");
}
}