Net Run Rate (NRR) is the primary method used to rank teams with equal points in cricket tournament league tables. It serves as a tie-breaker to determine which team has performed better across all matches by comparing the rate at which they score runs against the rate at which they concede them.
The Net Run Rate Formula
The mathematical formula for NRR is straightforward:
NRR = (Total Runs Scored / Total Overs Faced) – (Total Runs Conceded / Total Overs Bowled)
Important Rules to Remember
All-Out Rule: If a team is bowled out before completing their full quota of overs (e.g., all out in 42 overs during a 50-over match), the calculation uses the full quota of overs (50) for the NRR calculation.
Overs Conversion: Cricket overs are recorded in base-6. For calculation, 10.3 overs (10 overs and 3 balls) must be converted to 10.5 overs.
Duckworth-Lewis (DLS): In rain-affected matches, the "Runs Scored" and "Overs Faced" are adjusted to the revised targets and resources set by the DLS method.
Example Calculation
Suppose Team A plays one match:
They score 300 runs in 50 overs. (Run Rate For = 300 / 50 = 6.00)
They bowl out the opposition for 250 runs in 40 overs.
Crucial Step: Because the opposition was bowled out, Team A's "Overs Bowled" is credited as the full 50 overs.
In major tournaments like the ICC World Cup or the IPL, NRR often decides which team qualifies for the playoffs. A positive NRR means a team is scoring faster than its opponents, while a negative NRR indicates the team is conceding more runs per over than it is scoring.
function convertOversToDecimal(overs) {
var overString = overs.toString();
if (overString.indexOf('.') === -1) {
return parseFloat(overs);
}
var parts = overString.split('.');
var completeOvers = parseInt(parts[0]);
var balls = parseInt(parts[1]);
// Cricket balls are max 6 per over
if (balls >= 6) {
completeOvers += Math.floor(balls / 6);
balls = balls % 6;
}
return completeOvers + (balls / 6);
}
function calculateNRR() {
// Get Input Values
var runsScored = parseFloat(document.getElementById('runsScored').value);
var oversFacedRaw = parseFloat(document.getElementById('oversFaced').value);
var runsConceded = parseFloat(document.getElementById('runsConceded').value);
var oversBowledRaw = parseFloat(document.getElementById('oversBowled').value);
// Validation
if (isNaN(runsScored) || isNaN(oversFacedRaw) || isNaN(runsConceded) || isNaN(oversBowledRaw)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (oversFacedRaw <= 0 || oversBowledRaw 0 ? "+" : "") + nrr.toFixed(3);
if (nrr > 0) {
resultValue.style.color = "#1b5e20";
resultMsg.innerText = "Excellent! Your team has a positive Net Run Rate.";
} else if (nrr < 0) {
resultValue.style.color = "#b71c1c";
resultMsg.innerText = "Warning: Your team has a negative Net Run Rate.";
} else {
resultValue.style.color = "#333";
resultMsg.innerText = "The Net Run Rate is perfectly neutral.";
}
}