← Back to Blog

OPS+ Explained: How to Compare Hitters Across Eras and Parks

OPS+ takes a hitter's on-base plus slugging and adjusts it for the ballpark they play in and the era they played it in, then sets 100 as league average. A player with an OPS+ of 150 was 50% better than an average hitter that year, whether he played in Coors Field in 1999 or Oracle Park in 2023.

What is OPS+ and why does it exist?

OPS+ exists because raw OPS lies to you when you compare players across ballparks and decades. A .900 OPS in 1968, the "Year of the Pitcher," is a monster season. A .900 OPS in 2000, in the middle of the steroid-era offensive explosion, is solid but nothing special. Regular OPS can't tell you that. It just adds on-base percentage and slugging percentage together and hands you a number with no context attached.

OPS+ fixes that by comparing a player's OPS to the league average OPS that same season, then adjusting further for the specific park he played half his games in. The formula, roughly, is 100 times the sum of (OBP divided by league OBP) plus (SLG divided by league SLG, park-adjusted), minus 1. You don't need to memorize the math. Just remember that 100 is always average, and every point above or below that is a percentage point better or worse than the league.

How does OPS+ account for different ballparks?

OPS+ bakes in a park factor that measures how much easier or harder a stadium makes it to hit compared to a neutral park. Coors Field in Denver sits a mile above sea level. Thin air, less drag on the ball, and it has inflated offense there for three decades. A hitter who racks up a .950 OPS while playing 81 games a year at Coors isn't as good as a hitter with a .950 OPS at Petco Park in San Diego, historically one of the toughest parks for hitters. OPS+ knocks down the Coors hitter's number and bumps up the Petco hitter's number so you can compare them fairly.

This is the single biggest reason raw stat lines mislead casual fans. Larry Walker hit .334 for his career with a lot of that damage done at Coors Field, and for years people wrote him off as a product of altitude. His career OPS+ of 141, per Baseball-Reference, tells a different story: even after stripping out the park boost, he was 41% better than league average for his career. That's a Hall of Fame number, which is exactly where voters eventually put him.

How does OPS+ adjust for different eras?

OPS+ compares each player only to hitters in his own season, so a great year in a low-offense era and a great year in a high-offense era land on the same scale. Baseball's overall offense swings wildly across decades. The 1968 season averaged a league-wide OPS around .639, one of the lowest since the dead-ball era, largely because pitchers' mounds were higher and strike zones were bigger. By 2000, near the peak of the steroid era, league OPS sat closer to .782. Someone who posted a .750 OPS in 1968 was doing something historic. Someone who posted a .750 OPS in 2000 was roughly average.

That's why OPS+ works so well for Hall of Fame arguments and cross-generation debates. Mickey Mantle's career OPS+ of 172 and Mike Trout's career OPS+ sitting above 170 through his prime years, both from Baseball-Reference's career leaderboard, put two players from completely different offensive environments on the same number line. You couldn't do that with raw batting average or home run totals. A 40-homer season meant something very different in 1961 than it did in 2001.

Is OPS+ better than batting average or OPS alone?

For evaluating true hitting value, yes. OPS+ beats batting average outright and is more useful than plain OPS. Batting average only counts hits per at-bat and ignores walks, power, and the era or park a player hit in entirely. Two players can both hit .280, but if one drew 90 walks and slugged .520 while the other drew 25 walks and slugged .400, they weren't close to the same offensive threat. Batting average can't see that gap. OPS at least captures on-base skill and power together, but it still misses the fact that a .800 OPS in a pitcher's park in a low-scoring year is worth more than a .800 OPS in a hitter's paradise during a high-scoring year.

OPS+ has its own blind spots. It undervalues baserunning, defense, and situational hitting, and small sample sizes in a partial season can swing it around. But as a quick, era-and-park-neutral gut check on how good a hitter actually was relative to his peers, it's one of the most efficient single numbers the sport has. The same instinct applies to other stats: check out shooting percentage in basketball, where raw numbers without context can send you the wrong direction.

How do you use OPS+ when comparing two players right now?

Treat 100 as the baseline and read everything else as a percentage above or below it, and ignore the raw box score. If Player A has a 128 OPS+ and Player B has a 115 OPS+, Player A is having the better offensive season by a clear margin, even if Player B happens to have a higher batting average or more home runs that week. The number already accounts for park and league context, so you're comparing true production, not surface totals.

This matters most when you're trying to project which hitter is more likely to keep producing against a tough opponent or unfamiliar park. A hitter with a strong OPS+ built at home in a hitter's park is a different case than a hitter with the same OPS+ built on the road across multiple stadiums. If you're making game-by-game predictions and want to see how these adjusted numbers hold up pitch to pitch, Download GAGE and start testing your read on hitters against real lines, not just box scores. For a similar look outside baseball, check our breakdown of player efficiency rating in the NBA.

What counts as a good OPS+?

Anything from 100 to 115 is solid regular production, 120 to 140 is All-Star caliber, and anything north of 150 for a full season is an MVP-level year. Barry Bonds' 2004 season produced a 233 OPS+, the highest single-season mark in modern history, according to Baseball-Reference.

Can OPS+ go below 100?

Yes, and it regularly does for below-average hitters. 100 represents league average, so anything under that means the player produced less offense than a typical hitter that season once park and league are factored in. A hitter with an 85 OPS+ performed 15% below league average.

Does OPS+ work for pitchers too?

No, OPS+ is strictly a hitting stat. The pitching equivalent that adjusts ERA for park and league is called ERA+, which runs on the same 100-is-average scale but works in the opposite direction, measuring run prevention instead of run production.