Use dot for balls (e.g. 19.4 is 19 overs 4 balls). If All Out, enter full quota (e.g. 20.0).
Use dot for balls (e.g. 19.5). If Opponent All Out, enter full quota.
Net Run Rate
0.000
function calculateNRR() {
// Get Input Values
var runsScoredInput = document.getElementById("runsScored").value;
var oversFacedInput = document.getElementById("oversFaced").value;
var runsConcededInput = document.getElementById("runsConceded").value;
var oversBowledInput = document.getElementById("oversBowled").value;
// Validation
if (!runsScoredInput || !oversFacedInput || !runsConcededInput || !oversBowledInput) {
alert("Please fill in all fields correctly.");
return;
}
// Helper function to convert cricket over notation (e.g., 10.2) to mathematical overs
function convertOvers(oversStr) {
oversStr = oversStr.toString();
var parts = oversStr.split('.');
var overs = parseInt(parts[0]) || 0;
var balls = 0;
if (parts.length > 1) {
// Handle cases where user types .4 or .40
var decimalPart = parseInt(parts[1]);
// If user types 10.1, we assume 1 ball. 10.10 is unlikely but we assume 1 ball logic usually.
// Standardizing: strict 1 digit logic preferred but let's just take the first digit if multiple
if (decimalPart >= 6 && decimalPart < 10) {
// This handles weird input like 10.6 (which is technically next over)
// but we will treat as just balls
balls = decimalPart;
} else if (decimalPart 0) {
nrrFormatted = "+" + nrrFormatted;
}
// Display Logic
var resultArea = document.getElementById("result-area");
var nrrResult = document.getElementById("nrrResult");
var calcBreakdown = document.getElementById("calcBreakdown");
resultArea.style.display = "block";
nrrResult.innerText = nrrFormatted;
// Dynamic coloring
if (nrr >= 0) {
nrrResult.style.color = "#1b5e20"; // Green
} else {
nrrResult.style.color = "#c62828"; // Red
}
calcBreakdown.innerHTML =
"Team Run Rate: " + runsScored + " / " + mathOversFaced.toFixed(4) + " = " + runRateFor.toFixed(3) + "" +
"Opponent Run Rate: " + runsConceded + " / " + mathOversBowled.toFixed(4) + " = " + runRateAgainst.toFixed(3) + "";
}
What is Net Run Rate (NRR)?
Net Run Rate (NRR) is the primary method used in cricket tournaments to rank teams with equal points in a league table. It serves as a tie-breaker, measuring a team's winning margin or narrowing the margin of defeat.
It is effectively the difference between the rate at which a team scores runs and the rate at which they concede runs to their opponents throughout a tournament.
The Formula
The calculation is straightforward but requires precise handling of overs (sets of 6 balls):
NRR = (Total Runs Scored / Total Overs Faced) – (Total Runs Conceded / Total Overs Bowled)
How to Use This Calculator
Total Runs Scored: Enter the cumulative runs your team has scored in the tournament so far.
Total Overs Faced: Enter the total overs batted.
Important: If a team is "All Out" before their overs quota ends (e.g., in 45 overs during a 50-over match), the calculation counts the full quota (50 overs) as the overs faced.
Total Runs Conceded: Enter the cumulative runs scored by opponents against your team.
Total Overs Bowled: Enter the total overs your team has bowled.
Important: If you bowled the opponent out, you use the full quota of overs for the calculation, regardless of when the last wicket fell.
Calculation Example
Imagine Team A plays a match in a T20 tournament:
Batting: Team A scores 160 runs in 20.0 overs.
Run Rate For = 160 / 20 = 8.00
Bowling: Team A restricts the opponent to 140 runs in 20.0 overs.
Run Rate Against = 140 / 20 = 7.00
NRR: 8.00 – 7.00 = +1.000
A positive NRR indicates a team is scoring faster than their opponents on average, while a negative NRR indicates the opposite.