OPS is calculated by adding two statistics together: on-base percentage (OBP) and slugging percentage (SLG). That simple addition produces a single number that captures both a hitter’s ability to reach base and their power. A league-average OPS in Major League Baseball sits around .710 to .720, while anything above .900 enters elite territory. To really understand OPS, though, you need to understand how each half is built.
How On-Base Percentage Works
On-base percentage measures how often a batter reaches base per plate appearance. The formula divides a player’s total times on base (hits plus walks plus hit-by-pitches) by a slightly adjusted version of plate appearances:
OBP = (Hits + Walks + Hit-by-Pitch) / (At-Bats + Walks + Hit-by-Pitch + Sacrifice Flies)
The denominator here is worth paying attention to, because it’s not simply “plate appearances.” Sacrifice bunts are deliberately excluded. The reasoning: a sacrifice bunt is almost always ordered by the manager, so the batter isn’t genuinely trying to reach base. Counting it against them would penalize them for following instructions. Sacrifice flies stay in the denominator because a batter who hits a sac fly was actually trying for a hit and happened to produce an out that advanced a runner instead.
A player with a .330 OBP reaches base about a third of the time. That’s roughly league average. A .400 OBP is exceptional, meaning the batter gets on base in four out of every ten plate appearances.
How Slugging Percentage Works
Slugging percentage measures raw power by weighting each type of hit differently. Unlike batting average, which treats a single the same as a home run, slugging assigns a value based on total bases:
SLG = (Singles + Doubles×2 + Triples×3 + Home Runs×4) / At-Bats
A player who goes 1-for-4 with a home run has a slugging percentage of 1.000 for that game (4 total bases divided by 4 at-bats). A player who goes 1-for-4 with a single slugs .250. This is what makes slugging useful for separating contact hitters from power hitters, even when their batting averages look similar.
Notice that the denominator here is just at-bats, not the broader denominator used in OBP. That difference matters, and it’s one reason critics point out that OPS isn’t a perfectly clean statistic. You’re adding two fractions that don’t share the same denominator. More on that below.
Putting the Two Together
Once you have both numbers, OPS is straightforward:
OPS = OBP + SLG
If a player has a .350 OBP and a .480 SLG, their OPS is .830. That’s it. No weighting, no adjustments. The simplicity is both the appeal and the limitation of the stat.
Here’s a practical scale for evaluating OPS:
- Below .650: Well below average, typically a bench player or a hitter in a serious slump
- .700–.750: Average everyday player
- .750–.800: Above average, solid contributor
- .800–.900: All-Star caliber
- .900 and above: MVP-level production
- 1.000+: Historically elite, sustained only by the best hitters in any given season
The 2025 MLB league average sits at roughly .719, which gives you a useful baseline for evaluating any individual player.
Why OPS Works Despite Its Flaws
OPS has real structural problems. The most commonly cited issue is that it treats OBP and slugging as equally important by simply adding them together. In reality, OBP is more valuable for generating runs. Analysts behind “The Book,” one of the most respected sabermetric texts, argue that OPS substantially under-credits the importance of getting on base. A rough correction some analysts prefer is weighting OBP at 1.7 times its value before adding slugging (so 1.7 × OBP + SLG), which better reflects the run-scoring value of reaching base.
There’s also the mismatched denominator issue. OBP uses at-bats plus walks, hit-by-pitches, and sacrifice flies. Slugging uses only at-bats. Adding two ratios with different denominators is mathematically messy, and it means OPS doesn’t represent any single real-world rate. Tom Tango, lead author of “The Book,” has pointed out another subtle problem: because OBP excludes sacrifice flies from its calculation, OPS may inadvertently give credit to players whose teammates happen to get on base a lot, creating more sac fly opportunities.
Despite all this, OPS holds up remarkably well in practice. When you plot team OPS against runs scored across full seasons, the correlation is strong, with an R-squared of 0.90. That means OPS explains about 90% of the variation in how many runs a team scores. A Baseball Prospectus analysis covering 1980 through 2016 found that team OPS actually outperformed wOBA (weighted on-base average, a more mathematically rigorous stat) at both describing and predicting team run production. OPS had a descriptive correlation of .944 compared to wOBA’s .933, and the gap was statistically significant.
So OPS is technically imperfect but practically excellent. For a casual fan or someone scanning a box score, it remains one of the most useful single numbers in baseball.
OPS+ Adjusts for Context
Standard OPS has one big blind spot: it doesn’t account for where a player plays. A .800 OPS at Coors Field in Denver, where the thin air helps the ball carry, is less impressive than a .800 OPS at a pitcher-friendly park like Oracle Park in San Francisco. It also doesn’t account for era. Offense levels fluctuate across decades, so comparing a player from the steroid era to one from the dead-ball era using raw OPS is misleading.
OPS+ solves both problems. It adjusts a player’s OPS for their home ballpark and the league-wide offensive environment, then scales everything so that 100 equals exactly league average. An OPS+ of 120 means the player was 20% better than the league-average hitter after adjusting for context. An OPS+ of 85 means they were 15% below average.
This makes OPS+ far more useful for comparing players across teams or across decades. A 150 OPS+ means roughly the same thing whether you’re looking at a player in 1975 or 2024. If you’re doing any kind of historical comparison or trying to evaluate a player beyond their raw numbers, OPS+ is the version worth using.

