Yordan Alvarez's .432 OBP and .601 SLG work out to a 188 OPS+ in the 2026 AL
OPS+ takes a hitter's on-base percentage and slugging percentage, compares each with the league average for the same season, and restates the result so that a league-average hitter is 100. The formula in the MLB Glossary is 100 × (OBP ÷ league OBP + SLG ÷ league SLG − 1). The 2026 American League hit .316 OBP and .396 SLG. Put Yordan Alvarez's (HOU) .432/.601 into that and you get 100 × (1.3664 + 1.5174 − 1) = 188.4, which rounds to an OPS+ of 188. He was 88% more productive at the plate than the average AL hitter.
The same line scores differently against a different average. Against the 2025 AL average (.313/.406), Alvarez comes out at 186, and against the 2026 NL average (.321/.405) he comes out at 183. The AL's league OPS slipped from .719 to .712 in 2026, while the NL's rose from .719 to .726, so the two leagues moved in opposite directions. The ruler in the calculator above shows where a line falls among the 67 AL hitters who qualified for the batting title, and Alvarez was the highest of those 67.
Why look at OPS+
OPS (OBP plus SLG) rises and falls with the run environment. An .850 OPS is ordinary in a season when everyone hits and impressive in a pitchers' year. OPS+ pins that environment to 100, which helps in situations like these.
- Comparing seasons: a .405 OBP and .590 SLG (.995 OPS) is a 175 OPS+ against the 2025 AL average and a 177 against 2026. The 2026 AL gave up a little offense, so the same line is worth 2 points more.
- Comparing AL and NL hitters: the two leagues have separate averages. Against 2026 averages that .405/.590 line is a 177 in the AL and a 172 in the NL. OPS+ tells you where a hitter stands inside his own league. It does not adjust for the difference in talent between leagues.
- Taking out the park: a hitter who plays half his games in a hitter-friendly park gets an inflated OPS. The Baseball-Reference version of OPS+ corrects for that with a park factor, and so does this calculator.
- Checking a number you saw: an 'OPS+ of 150' means 50% better than the league average (MLB Glossary). Plenty of box scores and stat pages show only OBP, SLG and OPS, so this is a quick way to convert them.
How to use it
- Pick a league. MLB AL, MLB NL, KBO and the NPB Central and Pacific Leagues are available, and the 2026 regular-season average fills the 'Comparison baseline' box.
- Enter OBP and SLG. .405, 0.405 and 0,405 are all read as the same value. The player name is optional and only labels the result and the ruler.
- To compare with another season, or with a minor-league or amateur league, edit the league OBP and SLG yourself. The hitter dots on the ruler then disappear and the calculation uses your own averages.
- If you know the park factor, enter it. 100 is neutral and larger numbers favor hitters more. Leave it blank and 100 is used.
- In 'Split into two parts' you can see what percentage of the league OBP and SLG the hitter reached. The rows below show the same line against the other leagues and the 2025 average, next to the wrong 'OPS ÷ league OPS' result.
How it is calculated
- League average: add up every hit, walk, hit-by-pitch, at-bat, sacrifice fly and total base in the league. OBP = (H + BB + HBP) ÷ (AB + BB + HBP + SF) and SLG = TB ÷ AB. It is not a plain average of every hitter's OBP.
- OPS+: 100 × (OBP ÷ league OBP + SLG ÷ league SLG − 1). The big number is rounded to a whole number. The formula line shows the league averages to four decimals and the result to one.
- Park factor: if it is not 100, the league average is first reshaped for that park the Baseball-Reference way and then divided into. The result is not divided by the park factor (see the park factor section below).
- Qualified-hitter dots: calculated the same way without a park adjustment, and the count of higher hitters compares whole numbers.
OPS+ divides the two rates separately and then adds them, so it differs from OPS divided by league OPS. Here are examples against the 2026 AL average.
| OBP | SLG | OPS | OPS+ | OPS ÷ league OPS × 100 | vs. 2025 average |
|---|---|---|---|---|---|
| .432 | .601 | 1.033 | 188 | 145 | 186 |
| .405 | .590 | .995 | 177 | 140 | 175 |
| .370 | .480 | .850 | 138 | 119 | 137 |
| .400 | .400 | .800 | 128 | 112 | 126 |
| .300 | .500 | .800 | 121 | 112 | 119 |
League OBP and SLG (2025 and 2026 regular seasons)
OPS+ only works against an average from the same league and the same season. In 2026 the KBO's league OPS jumped from .727 to .750. In MLB the AL fell and the NL rose, so the two leagues moved in opposite directions. The NPB Pacific League's SLG climbed sharply from .352 to .377.
| League | Season | OBP | SLG | OPS |
|---|---|---|---|---|
| KBO | 2026 | .346 | .404 | .750 |
| KBO | 2025 | .338 | .389 | .727 |
| MLB AL | 2026 | .316 | .396 | .712 |
| MLB AL | 2025 | .313 | .406 | .719 |
| MLB NL | 2026 | .321 | .405 | .726 |
| MLB NL | 2025 | .317 | .402 | .719 |
| NPB Central (pitchers excluded) | 2026 | .310 | .362 | .672 |
| NPB Central (pitchers included) | 2026 | .301 | .350 | .651 |
| NPB Central (pitchers included) | 2025 | .302 | .350 | .652 |
| NPB Pacific | 2026 | .308 | .377 | .685 |
| NPB Pacific | 2025 | .307 | .352 | .659 |
MLB keeps the AL and NL separate. In 2026 their averages were .712 and .726 OPS, so a .405/.590 line is a 177 against the AL and a 172 against the NL, a 5-point gap. FanGraphs' wRC+ also uses the AL or the NL average, whichever applies.
The NPB Central League again played 2026 without a designated hitter, so pitchers batted. Baseball-Reference builds the league average from league batting without pitchers, so this calculator removed the 1,604 Central League pitcher plate appearances (.127 OBP, .119 SLG) from the league total. Those appearances were about 5% of the league's plate appearances. Leave them in and the league average falls to .301/.350, which pushes the same hitter's OPS+ up by about 9. The 2025 Central League has no pitcher-batting total, so only the pitchers-included line is listed, and the calculator leaves it out of the 'vs. 2025 average' row.
OPS+ among qualified hitters
A qualified hitter has at least 3.1 plate appearances per team game. Regulars who reach that mark tend to be better than the league average, so in the 2026 AL 42 of the 67 qualified hitters were above 100 and the median was 108. 'OPS+ 100 = average' refers to the whole league, and among regulars it sits below the middle. The ruler above draws that spread directly.
| League (2026) | Qualifying PA | Hitters | Top | Median | Above 100 |
|---|---|---|---|---|---|
| KBO | 446 PA | 49 | 180 (Austin Dean, LG) | 111 | 31 |
| MLB AL | 502 PA | 67 | 188 (Yordan Alvarez, HOU) | 108 | 42 |
| MLB NL | 502 PA | 68 | 157 (Pete Crow-Armstrong, CHC) | 114 | 49 |
| NPB Central | 444 PA | 19 | 192 (Teruaki Sato, Hanshin) | 116 | 13 |
| NPB Pacific | 444 PA | 26 | 191 (Kensuke Kondo, SoftBank) | 115 | 21 |
The same OPS can give different OPS+ values
OPS+ divides OBP and SLG by their own league averages before adding them. League OBP is lower than league SLG, so a point of OBP moves OPS+ slightly more. In the 2026 AL, +.010 of OBP is worth 3.2 points of OPS+ and +.010 of SLG is worth 2.5. That is why two .800 OPS lines differ: .400/.400 is a 128, while .300/.500 is a 121.
| League (2026) | OBP +.010 | SLG +.010 | OBP weight ÷ SLG weight | .400/.400 | .300/.500 |
|---|---|---|---|---|---|
| KBO | +2.9 | +2.5 | 1.17 | 114 | 110 |
| MLB AL | +3.2 | +2.5 | 1.25 | 128 | 121 |
| MLB NL | +3.1 | +2.5 | 1.26 | 124 | 117 |
| NPB Central | +3.2 | +2.8 | 1.17 | 140 | 135 |
| NPB Pacific | +3.2 | +2.7 | 1.22 | 136 | 130 |
Even so, OPS+ does not give OBP enough credit. FanGraphs says OBP is worth about 1.8 times SLG when it comes to scoring runs, and the Book Blog post 'Why does 1.7*OBP+SLG make sense?' puts the ratio between 1.7 and 1.8 depending on the data. In OPS+ the ratio is around 1.2, so on-base hitters are rated a little low. That is why FanGraphs recommends wRC+, which weights each event by its run value, over OPS+.
The park factor goes into the league average
Baseball-Reference's park factor (BPF) is built from the gap between runs scored in a team's home games and in its road games, then scaled down because home games are only half of a season. In Baseball-Reference's own example, the 1982 Braves had a home-to-road scoring ratio of 1.170, and the BPF of 1.07 that came out of the full set of corrections was not far from (1.170 + 1) ÷ 2 ≈ 1.08. It normally uses three years of data, and the current season uses that year and the one before.
Where the correction is applied also matters. Baseball-Reference calls dividing the result by BPF the PRO+ formula from Total Baseball and keeps it separate from its own method. The B-Ref method scales hits, walks, hit-by-pitch and total bases by the same ratio, leaves outs unchanged, so that league run creation (RC) without pitchers becomes BPF times larger, and then divides by the resulting league OBP and SLG. This calculator uses the B-Ref method. The table compares them for a .405/.590 line against the 2026 AL average.
| Park factor | Adjusted league OBP | Adjusted league SLG | OPS+ (B-Ref method) | Result ÷ park factor (PRO+) |
|---|---|---|---|---|
| 90 | .303 | .378 | 190 | 197 |
| 95 | .310 | .387 | 183 | 186 |
| 100 | .316 | .396 | 177 | 177 |
| 105 | .322 | .405 | 171 | 169 |
| 110 | .329 | .413 | 166 | 161 |
| 115 | .334 | .422 | 161 | 154 |
The further the park factor is from 100, the wider the gap between the two methods. Stat sites differ in the years they use and in how they calculate a park factor, so before you enter one, check that 100 is neutral and that the number already reflects the fact that only half of a team's games are at home.
Common mistakes
- Dividing OPS by league OPS: Alvarez's 1.033 OPS divided by the 2026 AL OPS gives 145, which is 43 below his 188 OPS+. OPS+ divides the two rates separately, adds them and subtracts 1, so the further a line is from average, the bigger the gap.
- Using another season's average: against the 2025 AL average, Alvarez's line comes out at 186, 2 points off. In a league that changed more the error is larger: in the KBO, where league OPS rose from .727 to .750, a 180 becomes a 189. League OPS changes every year, so use the average from the same season as the stats.
- Using an average that includes pitchers: use the NPB Central League total as it stands and the league average drops to .301/.350, so Teruaki Sato's (Hanshin) .383/.609 comes out at 201 instead of 192. For a league with no DH, use the average without pitcher batting.
- Entering the park factor backward: a hitter-friendly park is a number above 100. Reverse it and the correction runs the wrong way. As the table shows, OPS+ differs by more than 20 between park factors of 90 and 110.
- Treating an unsourced rating scale as official: tiers like '140 or higher is MVP level' do not appear in the MLB Glossary or in Baseball-Reference's explanation. FanGraphs attaches a rough scale only to wRC+ (160 excellent, 140 great, 115 above average, 100 average, 80 below average, 75 poor, 60 awful) and has none for OPS+. Look at where the hitter ranks among qualified hitters from the same season as well.
- Comparing a small sample with a full season: at 30 plate appearances, one extra single moves OPS+ by about 20 (against the 2026 AL average, a line of 27 at-bats, 8 hits, 12 total bases and 3 walks goes from 128 to 148).
Limits
- OPS+ captures only plate appearance results. Baserunning, defense and position are not in it, so pair it with an all-in-one measure such as WAR for a hitter's full value.
- It adds OBP and SLG with close to equal weight, so its results differ slightly from wRC+, which weights each event by run value (see the section above).
- The MLB averages are calculated separately for the AL and NL. Qualified hitters were assigned to the league of the team on the list (the last team, if a player was traded during the season). A hitter who played in both leagues may differ from the Baseball-Reference figure.
- The qualified-hitter dots are calculated without a park adjustment, so they can differ by a few points from the OPS+ on sites that do adjust for the park.
- If you enter your own league averages and also change the park factor, the league batting average the park adjustment needs is taken from the last league you picked. The effect of that on the result is below 1 for park factors between 80 and 120.
- The league averages and the qualified-hitter lists are the final regular-season figures as checked on 2026-10-22. The postseason is not included.
- The official NPB site (npb.jp) would not open that day. The 2026 NPB league totals were rebuilt by adding up player lines from Sports Navi, and the qualified-hitter tables and 2025 team records were checked against archived copies of npb.jp. The rebuilt totals have 31 fewer plate appearances than the sum of the 12 teams' pitching lines, which changes league OBP by less than .001.
- What you enter is calculated in this browser and is not sent to a server. Values go into the address bar only when you press Copy link or edit a value.
As of The formula and the park method were checked on 2026-10-22 against the MLB Glossary, the Baseball-Reference explanations, the FanGraphs Library and the Book Blog post. League averages and qualified hitters were calculated the same day from the KBO record room, MLB official stats (Stats API), NPB official records (archived copies) and Sports Navi's 2026 regular-season figures.
Sources
- 01MLB Glossary: Adjusted OPS (OPS+)Formula 100 × (OBP/lgOBP + SLG/lgSLG − 1), where 100 is league average and 150 is 50% better than league average
- 02Baseball-Reference: Batting Glossary (Adjusted OPS+)PRO+ (result ÷ BPF) versus the B-Ref method: league RC without pitchers × BPF, H, BB, HBP and TB scaled by the same ratio, outs fixed, giving lgOBP* and lgSLG*
- 03Baseball-Reference: Park AdjustmentsThree-year park factor by default (two years for the current season), 1982 Braves example: BPF 1.07 ≈ (1.170 + 1) ÷ 2
- 04FanGraphs Library: OPS and OPS+1 point of OPS+ = 1 percentage point from league average; OBP is worth about 1.8 times SLG for scoring
- 05FanGraphs Library: wRC and wRC+Rough wRC+ scale (160, 140, 115, 100, 80, 75, 60); league average is the AL or NL without pitchers; wRC+ recommended over OPS+
- 06The Book Blog: Why does 1.7*OBP+SLG make sense?The OBP coefficient is 1.7 to 1.8 times SLG depending on the data
- 07KBO official records: Team batting2026 regular season, 10-team totals: 49,548 AB, 13,277 H, 20,038 TB, 437 SF; Basic2 has 5,319 BB and 838 HBP (.346 OBP, .404 SLG); 2025 from the same table
- 08KBO official records: Player batting49 hitters at or above the 2026 qualifying 446 PA, cross-checked with BB, HBP, OBP and SLG on Basic2
- 09MLB Stats API: 2026 team hitting30 teams summed by AL and NL; the 135 qualified hitters (67 AL, 68 NL) come from the qualified list of the same API; 2025 uses the same address with the 2025 season
- 10NPB: 2026 Central League individual batting (qualified)With the Pacific League page (bat_p.html), 45 qualified hitters (19 Central, 26 Pacific); checked against the archived copy of 2026-10-08
- 11NPB: 2025 Central League team battingWith the Pacific League page (tmb_p.html), the 2025 league totals; checked against an archived copy
- 12Sports Navi: NPB standings and team battingPlayer lines for the 12 NPB teams in 2026 were summed to rebuild the league totals and the Central League pitcher batting (1,604 PA); cross-checked with team runs, home runs and batting average
Frequently asked questions
How do you calculate OPS+?
OPS+ = 100 × (OBP ÷ league OBP + SLG ÷ league SLG − 1), the formula in the MLB Glossary. With the 2026 AL average of .316/.396, Yordan Alvarez's .432 OBP and .601 SLG give 100 × (1.3664 + 1.5174 − 1) = 188.4, which rounds to 188. With a park factor, the league average is first adjusted for that park the Baseball-Reference way and then divided into.
What does an OPS+ of 100 mean, and what is the average OPS?
An OPS+ of 100 means the hitter is exactly as productive as the league-average hitter that season, and each point is one percentage point above or below it. League OPS in 2026 was .712 in the AL, .726 in the NL, .750 in the KBO, .672 in the NPB Central League (pitchers excluded) and .685 in the NPB Pacific League.
What is the difference between OPS and OPS+?
OPS simply adds OBP and SLG, so the same number is worth different amounts depending on league, season and park. OPS+ sets that environment's average to 100. OPS+ is also not OPS divided by league OPS: Alvarez's 2026 line gives 145 that way but an OPS+ of 188.
What is a good OPS+?
There is no official scale. The MLB Glossary only says 150 means 50% better than league average. A better yardstick is the same season's regulars: among the 67 qualified AL hitters in 2026 the median was 108 and 42 were above 100. FanGraphs' rough tiers (140 great, 160 excellent) are for wRC+, not OPS+.
Where do I find a park factor?
Baseball-Reference builds a hitter park factor (BPF) from home and road scoring, normally over three years. 100 is neutral, and the more a park favors hitters, the higher it is. Sites differ in the period and method they use, so note the source, and if you are unsure, leave the box blank and 100 is used.
How is OPS+ different from wRC+?
Both put league average at 100, but wRC+ is built on wOBA, which gives walks, singles and extra-base hits their own run values. OPS+ adds OBP and SLG with close to equal weight, so it undervalues getting on base. FanGraphs says OBP is worth about 1.8 times SLG for scoring and recommends wRC+ over OPS+.
Why does the league average leave out pitchers?
Because Baseball-Reference builds the league average behind OPS+ from league batting without pitchers. The NPB Central League had no designated hitter and pitchers took 1,604 plate appearances in 2026. Leaving them in would drop the average to .301/.350 and raise a hitter's OPS+ by about 9. The AL, NL, KBO and Pacific League use a DH, so pitchers barely bat.
Can I compare OPS+ across leagues?
OPS+ shows where a hitter stands against his own league's average, so it ignores differences in talent between leagues. A 150 in the AL and a 150 in the KBO each mean 50% better than that league's average, not equal ability. For a player who changed leagues, compare each league's line against its own average.