OPS adds two numbers that don't belong together
OPS won the war for the mainstream. On-base plus slugging is now printed on the back of the broadcast graphic, cited by announcers who would never touch wRC+, and used as the default shorthand for "good hitter." It earned that status honestly: OPS correlates with team run scoring far better than batting average ever did, and it can be computed by anyone with a box score. But the stat has a structural embarrassment hiding in plain sight. It is the sum of two fractions with different denominators, added together as if that operation meant something. It does not, strictly speaking, mean anything. OPS works in spite of its construction, not because of it.
The denominators don't match
On-base percentage is hits plus walks plus hit-by-pitches divided by plate appearances. Slugging percentage is total bases divided by at-bats. Those are different denominators: plate appearances include walks and sacrifices, at-bats do not. Adding OBP and SLG is adding a per-plate-appearance rate to a per-at-bat rate. In any other context a math teacher would circle it in red. The sum produces a number that has no units and no clean interpretation; an OPS of .850 does not correspond to any real quantity of anything. It is an index that happens to rank hitters reasonably well, which is a different and weaker claim than measuring their value.
The one-to-one weighting is wrong
Even if you forgive the denominators, OPS makes a second assumption: that one point of on-base percentage is worth exactly one point of slugging. It is not. A large body of run-expectancy work shows that getting on base is worth substantially more to run scoring than the equivalent point of slugging — the common estimate is that OBP is roughly 1.7 to 1.8 times as valuable. OPS treats them as equal, which means it systematically undervalues the high-OBP, contact-and- patience hitter and overvalues the low-OBP slugger who runs into mistakes. Two players with identical .800 OPS marks can differ meaningfully in actual run contribution depending on how the .800 is split between the two halves.
The slugger-vs-grinder distortion
Consider a patient leadoff type with a .390 OBP and a .410 SLG, and a free-swinging slugger with a .310 OBP and a .490 SLG. Both land at exactly .800 OPS, and the stat declares them equal. They are not. The leadoff hitter is making outs far less often, and outs are the currency a lineup cannot get back. Properly weighted run estimators consistently rank the high-OBP player ahead, sometimes by a wide margin, because avoiding outs compounds across an inning in a way slugging does not. OPS flattens that difference to zero. The hitters most penalized by the stat are exactly the ones whose value comes from not making outs, which is the single most important thing a hitter can do.
Park and league context vanish
OPS is also a raw number with no context baked in. An .800 OPS in a pitcher's park in a depressed run environment is a very different season from an .800 OPS in a launching pad during an offensive boom, yet the raw stat treats them identically. This is why OPS+ exists: it sets league-average to 100 and adjusts for park, so a 130 OPS+ means 30% better than league average regardless of where and when it was posted. OPS+ is a real improvement, but notice it inherits the same flawed one-to-one weighting of its parent; it normalizes the context without fixing the addition.
What wOBA does instead
The stat that does the job OPS is asked to do is weighted on-base average. Instead of summing two rates, wOBA assigns each offensive event — walk, hit-by-pitch, single, double, triple, home run — a coefficient drawn from how much that event actually adds to run expectancy, then divides by plate appearances. A walk is worth roughly 0.69, a single around 0.89, a home run around 2.0, in the linear-weights framework. The result is a single rate on one denominator, scaled to look like OBP, where every point reflects measured run value. wOBA is what you get when you take the instinct behind OPS — combine getting on base with hitting for power — and do the combination correctly.
Why OPS still earns its keep
None of this means OPS is useless. For a back-of-envelope read with nothing but a newspaper box score, OPS is genuinely good: it captures most of what matters about a hitter and it beats batting average and slugging alone by a wide margin. The correlation with team runs is strong enough that the broken construction rarely flips a clearly-good hitter into a clearly- bad one. The stat fails at the margins, not the extremes. The problem is that evaluation usually happens at the margins — arbitration cases, roster decisions, MVP ballots are decided between players a few points apart, exactly where the mis-weighting and the mismatched denominators do their damage.
The clutch-and-context blind spot
Because OPS is a season-long rate with no sequencing information, it is silent about when the production happened. Two hitters with identical OPS marks can have contributed very differently to actual wins if one front-loaded his value in blowouts and the other delivered in tight games, and OPS will never show the difference. That is not a unique failing — most rate stats share it — but it matters because OPS is so often the final word in a casual evaluation. The number ends the conversation precisely where a real evaluation of run impact would start asking about leverage, base-out states, and the run environment of each plate appearance.
Park-and-league adjustment partly addresses context, but it cannot rescue the underlying construction. A hitter who walks ninety times and slugs modestly is creating runs through a channel OPS systematically discounts, and no amount of park normalization repairs the one-to-one weighting that caused the discount in the first place. The fixes layered on top of OPS — OPS+, and the park factors behind it — are genuine improvements to the inputs, but they leave the core addition untouched. You can normalize a flawed sum all you like; it is still a flawed sum. The only real fix is to stop adding the two rates and start weighting each event by the runs it actually produces, which is the whole point of the linear- weights family that replaced OPS at the analytical frontier.
The honest read
Treat OPS as a fast, dirty, surprisingly effective index, not as a measurement. It will tell you in two seconds whether a hitter is good, and it will be right most of the time. But it adds two fractions that don't share a denominator and weights them as equals when they are not, so the moment a comparison gets close, switch to wOBA or wRC+, which price each event by its real run value and adjust for context. The number on the broadcast is a convenience that survived because it mostly works. Knowing exactly where it stops working — tight comparisons, on-base-heavy profiles, extreme parks — is the difference between using OPS and being fooled by it.