Two numbers dominate the “is this hitter actually good?” conversation, and both are built to answer it the same way: take a player’s offense, strip out the ballpark and the league’s run environment, and rescale so that 100 is exactly average. A 150 is fifty percent better than league; an 80 is twenty percent worse. The two stats are OPS+ and wRC+, and they agree far more often than they disagree.
But they are not the same calculation, and the places where they part ways tell you something real about how offense gets measured. One is built up from on-base and slugging; the other is built down from a single run-value-correct number. When you understand which is which, you stop arguing about whose 145 is “right” and start reading them for what each is good at.
What the two stats share
Start with the common ground, because it is most of the picture. Both OPS+ and wRC+ are park- and league-adjusted index stats pinned to 100. That adjustment is the whole reason they exist. Raw OPS and raw wOBA both reward a hitter for calling Coors Field home and quietly punish one stuck in a pitcher’s park in a low-offense year. The “plus” versions sand that away, so a 130 in Denver and a 130 in San Diego mean the same thing: thirty percent above the league’s average bat, after accounting for where and when the games were played.
That shared scale is why they are usually interchangeable in casual use. If you only remember one rule, remember the anchor: 100 is average, every point above or below is a percentage point of offense, and roughly 150-and-up is a genuine middle-of-the-order season. The disagreement only shows up at the margins — but the margins are where the interesting hitters live.
How OPS+ is built
OPS+ comes from Baseball-Reference, and despite the name it is not simply OPS divided by league OPS. It indexes on-base and slugging separately against the league, then adds them. The league-relative core looks like this:
and the result is then park-adjusted using the batter’s home-ballpark factor. Splitting OBP and SLG before adding them is a real improvement over indexing raw OPS — it stops a high-OBP, low-SLG hitter from being averaged into mush — but the structure still carries a built-in bias. Because slugging tops out at a denominator of at-bats while on-base spreads across plate appearances, and because the two are simply summed with equal billing, OPS+ effectively over-credits slugging relative to the actual run value of an extra base. A hitter who piles up total bases scores a touch higher in OPS+ than his true run contribution warrants; a walk-heavy hitter scores a touch lower. The bias is small. It is also consistent and one-directional, which is exactly why the next stat exists.
How wRC+ is built
wRC+ comes from FanGraphs and takes the opposite road. It starts from wOBA, which already weights every walk, single, double, triple, and home run by its measured run value — a home run is worth its run value, not just its four total bases. wRC+ converts that wOBA into runs above average, layers in the park factor and the league’s run-per-PA baseline, and rescales to 100. Because the foundation is run-value-correct from the first step, wRC+ does not have OPS+’s slugging tilt. An extra double and an extra walk are each credited at precisely what they have historically been worth on the scoreboard, no more.
That is the entire philosophical difference. OPS+ assembles two familiar rate stats and accepts a known, modest distortion as the price of using ingredients you can find on any stat page. wRC+ pays the same currency — runs — at every step and therefore never has to correct itself afterward.
The 2025 leaders
Here is where honesty matters more than completeness. FanGraphs blocks automated data pulls — a scripted request comes back HTTP 403 — so the table below shows real, computed OPS+ for the 2025 qualified leaders, and we discuss wRC+ conceptually rather than auto-pulling a column we could not verify. The OPS+ figures here are computed from Baseball-Reference’s on-base and slugging components against a league OBP of .315 and SLG of .403. Note the caption’s caveat: these are the un-park-adjusted, league-relative form of the formula above, so a hitter’s true park-adjusted OPS+ would nudge a few points in either direction.
| Player | PA | OBP | SLG | OPS+ |
|---|---|---|---|---|
| Aaron Judge | 710 | 0.462 | 0.688 | 217 |
| Shohei Ohtani | 811 | 0.393 | 0.629 | 181 |
| Nick Kurtz | 489 | 0.383 | 0.619 | 175 |
| George Springer | 661 | 0.393 | 0.559 | 163 |
| Cal Raleigh | 759 | 0.362 | 0.595 | 162 |
| Ronald Acu\xc3\xb1a Jr. | 412 | 0.417 | 0.518 | 161 |
| Juan Soto | 715 | 0.396 | 0.525 | 156 |
| Kyle Schwarber | 742 | 0.363 | 0.565 | 155 |
| Kyle Stowers | 457 | 0.368 | 0.544 | 152 |
| Vladimir Guerrero Jr. | 769 | 0.394 | 0.503 | 150 |
| Giancarlo Stanton | 311 | 0.342 | 0.564 | 148 |
| Ketel Marte | 556 | 0.376 | 0.517 | 148 |
| Will Smith | 502 | 0.398 | 0.486 | 147 |
| Jonathan Aranda | 422 | 0.393 | 0.489 | 146 |
| Corbin Carroll | 642 | 0.343 | 0.541 | 143 |
Aaron Judge sits on top at a 217, which is the kind of number that ends arguments — a .462 OBP wrapped around a .688 slugging leaves no room for a methodology to disagree. Shohei Ohtani (181) and Nick Kurtz (175) follow. The instructive cases are lower down. Compare Cal Raleigh and Ronald Acuña Jr., separated by a single point at 162 and 161. Raleigh got there on a .595 slugging with a more ordinary .362 OBP; Acuña got there on a sky-high .417 OBP and a relatively modest .518 slugging. This is precisely the seam where OPS+ and wRC+ would diverge: OPS+’s slugging tilt flatters Raleigh’s profile slightly and shortchanges Acuña’s on-base, so a wRC+ leaderboard would very plausibly flip those two and rank the higher-OBP hitter ahead. Juan Soto’s 156, built on a .396 OBP and a comparatively tame .525 slugging, is the same story — a walk-and-on-base profile that wRC+ tends to reward a hair more than OPS+ does.
Why they diverge — and which to trust
The pattern is predictable once you know the mechanism. Two hitters with the same OPS+ but different shapes — one slugging-heavy, one on-base-heavy — will show up with different wRC+. The slugger’s wRC+ usually dips a point or three below his OPS+; the on-base hitter’s usually climbs. For most players the gap is inside the noise, single digits at most, and either stat ranks the league sensibly. It is only the extreme profiles — the pure masher, the pure walk machine — where the choice of stat changes the verdict.
OPS+ adds two rate stats and tolerates a small, known bias. wRC+ pays in runs at every step and never has to apologize.
So which should you use? When wRC+ is available, prefer it. It is run-value-correct by construction, it is the cleaner number, and it is the one analysts default to. But OPS+ is no consolation prize. It is park- and league-adjusted, it is on the same 100-is-average scale, it is computed transparently from numbers on every player page, and it lands within a few points of wRC+ for nearly everyone. As a widely available stand-in — on a site that does not carry FanGraphs’ stat, or in a quick back-of-envelope check — OPS+ does the job and rarely lies by much.
The bottom line
OPS+ and wRC+ are answering the identical question — how much better than average is this bat, after the park and the era are accounted for — and they reach nearly the same answer almost every time. The difference is in the build: OPS+ stacks OBP and SLG and accepts a gentle slugging tilt; wRC+ starts from wOBA and stays run-value-correct throughout. Reach for wRC+ when you can get it. Reach for OPS+ when you cannot, and trust it — just know which way it leans.
Sources & Further Reading
- OPS+ leaders computed from Baseball-Reference on-base and slugging components (2025 qualified batters, league OBP .315 / SLG .403). Numbers retrieved June 2026; re-runnable via
scripts/opsplus_vs_wrcplus.py. - FanGraphs — home of wRC+ and the wOBA it is built on. (Automated pulls are blocked, HTTP 403; wRC+ values must be read manually from the site.)
- Baseball-Reference glossary — the OPS+ definition and park-factor methodology.