Net Run Rate Calculation Formula

Cricket Net Run Rate (NRR) Calculator

Calculate tournament standings and qualification scenarios instantly.

Runs Scored & Overs Faced

Format: Overs.Balls (e.g. 19.3 for 19 overs 3 balls)

Runs Conceded & Overs Bowled

Use full quota if team was bowled out early.

What is the Net Run Rate Calculation Formula?

In cricket tournament standings, the Net Run Rate (NRR) is the primary tie-breaker used to rank teams with equal points. Understanding the net run rate calculation formula is crucial for teams planning their strategy in leagues like the IPL, ICC World Cup, or Big Bash.

The Mathematical Formula

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

Rules for Accurate Calculation

  • The "All Out" Rule: If a team is bowled out before completing their full quota of overs (e.g., 50 overs in an ODI or 20 overs in T20), the calculation uses the full quota of overs for which they were scheduled to play.
  • Fractional Overs: Since an over consists of 6 balls, you cannot use decimals directly. For example, 10.3 overs (10 overs and 3 balls) must be converted to 10.5 for mathematical purposes (3/6 = 0.5). Our calculator handles this conversion automatically.
  • Abandoned Matches: Matches with no result or those abandoned are usually excluded from the NRR aggregate.
  • Duckworth-Lewis-Stern (DLS): When DLS is applied, the runs scored and overs faced are adjusted based on the revised targets set for the match.

Real-World Example

Imagine a T20 team has played one match:

  • Match 1: Scored 180 in 20 overs. Conceded 150 in 20 overs.
  • Average Runs For: 180 / 20 = 9.00
  • Average Runs Against: 150 / 20 = 7.50
  • NRR: 9.00 – 7.50 = +1.500
function toDecimalOvers(overVal) { var val = parseFloat(overVal); if (isNaN(val)) return 0; var wholeOvers = Math.floor(val); var balls = Math.round((val – wholeOvers) * 10); if (balls >= 6) { // Handle edge cases where user might input .6 or .7 return wholeOvers + 1; } return wholeOvers + (balls / 6); } function calculateNRR() { var runsScored = parseFloat(document.getElementById('totalRunsScored').value); var oversFacedInput = document.getElementById('totalOversFaced').value; var runsConceded = parseFloat(document.getElementById('totalRunsConceded').value); var oversBowledInput = document.getElementById('totalOversBowled').value; var resultDiv = document.getElementById('nrrResult'); if (isNaN(runsScored) || isNaN(runsConceded) || oversFacedInput === "" || oversBowledInput === "") { resultDiv.style.display = "block"; resultDiv.style.background = "#fff3cd"; resultDiv.style.color = "#856404"; resultDiv.innerHTML = "Missing Data: Please fill in all fields with valid numbers."; return; } var decimalOversFaced = toDecimalOvers(oversFacedInput); var decimalOversBowled = toDecimalOvers(oversBowledInput); if (decimalOversFaced === 0 || decimalOversBowled === 0) { resultDiv.style.display = "block"; resultDiv.style.background = "#f8d7da"; resultDiv.style.color = "#721c24"; resultDiv.innerHTML = "Error: Overs cannot be zero."; return; } var runRateFor = runsScored / decimalOversFaced; var runRateAgainst = runsConceded / decimalOversBowled; var nrr = runRateFor – runRateAgainst; resultDiv.style.display = "block"; resultDiv.style.background = nrr >= 0 ? "#d4edda" : "#f8d7da"; resultDiv.style.color = nrr >= 0 ? "#155724" : "#721c24"; var sign = nrr > 0 ? "+" : ""; resultDiv.innerHTML = '
Final Net Run Rate
' + '
' + sign + nrr.toFixed(3) + '
' + '
' + '
RR For: ' + runRateFor.toFixed(2) + '
' + '
RR Against: ' + runRateAgainst.toFixed(2) + '
' + '
'; }

Leave a Comment