Use standard notation: 15.4 means 15 overs and 4 balls.
Current Run Rate (CRR):0.00
Projected Score:0
Required Run Rate (RRR):0.00
Runs Needed:0
Balls Remaining:0
Team Stats
Opponent Stats
Team Run Rate:0.00
Opponent Run Rate:0.00
Net Run Rate (NRR):+0.000
How Run Rate is Calculated in Cricket
In the game of cricket, Run Rate (RR) and Net Run Rate (NRR) are crucial statistics used to determine the scoring speed of a team and their standing in tournaments. Whether you are watching a T20 match or analyzing the World Cup points table, understanding how these figures are derived is essential.
1. Current Run Rate (CRR) Formula
The Current Run Rate is the average number of runs a batting team scores per over. It helps spectators and analysts understand the pace of the innings.
CRR = Total Runs Scored ÷ Total Overs Bowled
Note on Overs: In cricket, overs are often written as 10.4 (10 overs and 4 balls). Mathematically, this does not equal 10.4 decimal. Since an over has 6 balls, 4 balls is equal to 4/6 or 0.666 overs. Therefore, 10.4 overs is mathematically 10.666 overs.
2. Required Run Rate (RRR) Formula
When a team is chasing a target, the Required Run Rate tells them how many runs per over they need to score to win.
RRR = (Target Score – Current Score) ÷ Overs Remaining
For example, if a team needs 60 runs in the last 5 overs, the RRR is 60 ÷ 5 = 12.00 runs per over.
3. How Net Run Rate (NRR) is Calculated
Net Run Rate is the primary method used to separate teams with equal points in a tournament table. It calculates the difference between a team's scoring rate and the rate at which they concede runs.
NRR = (Total Runs Scored ÷ Total Overs Faced) – (Total Runs Conceded ÷ Total Overs Bowled)
Key Rules for NRR:
All Out Matches: If a team is bowled out before completing their full quota of overs (e.g., all out in 35 overs in a 50-over match), the calculation assumes they faced the full 50 overs.
Abandoned Matches: Matches with no result usually do not count towards the NRR calculation.
Winning Margin: A higher positive NRR indicates a team wins by large margins (many runs or many overs to spare).
Example Calculation
Imagine Team A scores 300 runs in 50 overs. Their Run Rate is 6.00.
In the next match, they concede 250 runs in 50 overs against Team B. The Conceded Run Rate is 5.00.
Team A's NRR: 6.00 – 5.00 = +1.000.
// Tab switching logic
function switchTab(tabName) {
// Remove active class from all tabs
var tabs = document.getElementsByClassName('calc-tab');
for (var i = 0; i < tabs.length; i++) {
tabs[i].classList.remove('active');
}
// Hide all sections
var sections = document.getElementsByClassName('calc-section');
for (var i = 0; i 1) {
balls = parseInt(parts[1]);
}
// Sanity check for bad input (e.g., 4.8 balls)
if (balls >= 6) {
// Technically invalid in cricket, but we treat it as entered
// Or we can convert balls to overs.
// Let's assume user might type 10.6 meaning 11 overs.
overs += Math.floor(balls / 6);
balls = balls % 6;
}
return overs + (balls / 6);
}
function calculateRunRate() {
var runs = parseFloat(document.getElementById('runsScored').value);
var oversTxt = document.getElementById('oversBowled').value;
var target = parseFloat(document.getElementById('targetScore').value);
var totalOvers = parseFloat(document.getElementById('totalMatchOvers').value);
if (isNaN(runs) || !oversTxt) {
alert("Please enter Runs Scored and Overs Bowled.");
return;
}
var actualOvers = convertOversToDecimal(oversTxt);
if (actualOvers === 0) {
alert("Overs cannot be zero.");
return;
}
// Calculate CRR
var crr = runs / actualOvers;
document.getElementById('display-crr').innerHTML = crr.toFixed(2);
// Calculate Projected Score
if (!isNaN(totalOvers) && totalOvers > 0) {
var projected = crr * totalOvers;
document.getElementById('display-projected').innerHTML = Math.round(projected);
document.getElementById('row-projected').style.display = 'flex';
} else {
document.getElementById('row-projected').style.display = 'none';
}
// Calculate RRR (if chasing)
if (!isNaN(target)) {
var runsNeeded = target – runs;
var oversRemaining = totalOvers – actualOvers;
// Show rows
document.getElementById('row-rrr').style.display = 'flex';
document.getElementById('row-needed').style.display = 'flex';
document.getElementById('row-balls').style.display = 'flex';
document.getElementById('display-needed').innerHTML = runsNeeded > 0 ? runsNeeded : 0;
// Balls remaining
var totalBalls = totalOvers * 6;
// current balls bowled
var parts = oversTxt.toString().split('.');
var ballsBowled = (parseInt(parts[0]) * 6) + (parts[1] ? parseInt(parts[1]) : 0);
var ballsLeft = (totalOvers * 6) – ballsBowled;
document.getElementById('display-balls').innerHTML = ballsLeft > 0 ? ballsLeft : 0;
if (oversRemaining > 0 && runsNeeded > 0) {
var rrr = runsNeeded / oversRemaining;
document.getElementById('display-rrr').innerHTML = rrr.toFixed(2);
} else if (runsNeeded 0) nrrFormatted = "+" + nrrFormatted;
document.getElementById('display-nrr-final').innerHTML = nrrFormatted;
document.getElementById('result-nrr').style.display = 'block';
}