How the Net Run Rate is Calculated

Cricket Net Run Rate (NRR) Calculator

Your Team Stats

Format: Overs.Balls (e.g. 20.3)
Leave empty if never bowled out.

Opponent Stats

Use full quota if opponent was all out.

Understanding Cricket Net Run Rate (NRR)

Net Run Rate (NRR) is a statistical method used in cricket to rank teams with equal points in a tournament table. It measures the efficiency of a team in terms of scoring runs and conceding them relative to the overs played.

The Official NRR Formula

NRR = (Total Runs Scored / Total Overs Faced) – (Total Runs Conceded / Total Overs Bowled)

The "Bowled Out" Rule (Crucial)

This is the most misunderstood part of NRR. If a team is bowled out (loses all 10 wickets) before their full quota of overs is completed, the calculation does not use the actual overs played. Instead, it uses the full allotted overs for that innings (e.g., 20.0 for T20 or 50.0 for ODI).

  • Example: If your team scores 150 runs but is all out in 15.2 overs of a 20-over match, your run rate is calculated as 150 / 20, not 150 / 15.33.
  • The Benefit: This penalizes teams for losing all their wickets quickly.

How to Calculate Overs for Math

Cricket overs are expressed in base-6 (6 balls per over). To use them in a formula, you must convert the balls to a decimal:

  • 0.1 balls = 0.166
  • 0.2 balls = 0.333
  • 0.3 balls = 0.500
  • 0.4 balls = 0.666
  • 0.5 balls = 0.833

Real World Calculation Example

Imagine Team A plays 3 matches in a T20 tournament:

  1. Match 1: Scores 180/5 (20 overs), Concedes 150/8 (20 overs).
  2. Match 2: Scores 120 (All out in 18 overs), Concedes 121/2 (15 overs).
  3. Match 3: Scores 200/4 (20 overs), Concedes 190 (All out in 19.2 overs).

Team A Total Runs Scored: 180 + 120 + 200 = 500.
Team A Total Overs Faced: 20 + 20 (all out rule) + 20 = 60 overs.
Runs Scored Rate: 500 / 60 = 8.333.

Opponent Total Runs Scored: 150 + 121 + 190 = 461.
Opponent Total Overs Faced: 20 + 15 + 20 (all out rule) = 55 overs.
Runs Conceded Rate: 461 / 55 = 8.381.

Net Run Rate: 8.333 – 8.381 = -0.048.

function convertOversToDecimal(oversStr) { var val = parseFloat(oversStr); if (isNaN(val)) return 0; var wholeOvers = Math.floor(val); var balls = (val – wholeOvers).toFixed(1) * 10; if (balls >= 6) { // Handle cases where user might enter .6 or .7 mistakenly wholeOvers += Math.floor(balls / 6); balls = balls % 6; } return wholeOvers + (balls / 6); } function calculateNRR() { // Inputs var runsScored = parseFloat(document.getElementById("runsScored").value); var oversFacedInput = document.getElementById("oversFaced").value; var allottedFaced = parseFloat(document.getElementById("allottedFaced").value); var runsConceded = parseFloat(document.getElementById("runsConceded").value); var oversBowledInput = document.getElementById("oversBowled").value; var allottedBowled = parseFloat(document.getElementById("allottedBowled").value); // Validation if (isNaN(runsScored) || isNaN(runsConceded) || oversFacedInput === "" || oversBowledInput === "") { alert("Please enter valid numbers for runs and overs."); return; } // Logic: If allotted overs provided, use those as the denominator (Bowled Out Rule) var finalOversFaced; if (!isNaN(allottedFaced) && allottedFaced > 0) { finalOversFaced = allottedFaced; } else { finalOversFaced = convertOversToDecimal(oversFacedInput); } var finalOversBowled; if (!isNaN(allottedBowled) && allottedBowled > 0) { finalOversBowled = allottedBowled; } else { finalOversBowled = convertOversToDecimal(oversBowledInput); } if (finalOversFaced === 0 || finalOversBowled === 0) { alert("Overs cannot be zero."); return; } // Calculate individual rates var runRateFor = runsScored / finalOversFaced; var runRateAgainst = runsConceded / finalOversBowled; var nrr = runRateFor – runRateAgainst; // Display Result var resultDiv = document.getElementById("nrrResult"); var nrrValueSpan = document.getElementById("nrrValue"); var nrrBreakdownSpan = document.getElementById("nrrBreakdown"); resultDiv.style.display = "block"; nrrValueSpan.innerHTML = "NRR: " + (nrr > 0 ? "+" : "") + nrr.toFixed(3); if (nrr > 0) { resultDiv.style.backgroundColor = "#e8f5e9"; nrrValueSpan.style.color = "#2e7d32"; } else if (nrr < 0) { resultDiv.style.backgroundColor = "#ffebee"; nrrValueSpan.style.color = "#c62828"; } else { resultDiv.style.backgroundColor = "#f5f5f5"; nrrValueSpan.style.color = "#333"; } nrrBreakdownSpan.innerHTML = "Run Rate For: " + runRateFor.toFixed(3) + " | Run Rate Against: " + runRateAgainst.toFixed(3); }

Leave a Comment