530 at-bats and 105 strikeouts: a contact rate of 80.2%
Contact rate is the share of at-bats that did not end in a strikeout. The formula is (AB − SO) ÷ AB, so 530 at-bats and 105 strikeouts give 425 ÷ 530 = 80.2%. That is 5.1 points above the 2026 MLB regular-season average of 75.1%, yet 41 of the 135 qualified MLB hitters were higher. The median contact rate among qualified hitters is 76.1%, so against everyday players 80.2% is clearly above the middle.
Contact rate alone does not describe a hitter. Batting average is the contact rate multiplied by the average on contact (hits ÷ non-strikeout at-bats). The .283 average in the example above splits into 80.2% × .353. That is why the analyzer plots qualified hitters on a contact map with these two values as the axes, and shows where plate appearances ended in a 100-square grid next to the league average.
Why look at contact on its own
The same batting average can come from very different hitters. In 2026, Geraldo Perdomo (AZ) and Garrett Mitchell (MIL) both hit .262. Perdomo made contact in 84.7% of his at-bats and Mitchell in only 63.8%. In return, Mitchell turned 41.2% of his contact into hits and hit 11 home runs. A batting average alone hides this difference. A hitter who rarely strikes out puts more balls in play, while a hitter who strikes out often has to make up for it with the results of the contact he does make. So contact is worth looking at separately in situations like these.
- Sizing up a new hitter or a prospect: separate hitters who make contact often from hitters who miss more but do damage when they connect.
- Finding out why an average dropped: check whether strikeouts rose (a lower contact rate) or whether contact turned into fewer hits (a lower average on contact or BABIP). The first is more likely a change in skill, while the second is more exposed to chance.
- Setting a lineup in amateur or school ball: the plate appearances, at-bats, hits and strikeouts in a scorebook are enough to compare with the league average.
- When a stats site shows a different "Contact%": check what each number counts, swings or at-bats.
How to use it
- Pick the league to compare with (MLB, KBO or NPB). The league average and the qualified hitters on the map switch to that league's 2026 regular season.
- Enter plate appearances, at-bats, hits, home runs, strikeouts and sac flies exactly as the season totals appear on a stats site. Empty sac flies count as 0. The example buttons fill in the top and lowest contact-rate hitters of the chosen league and one amateur season.
- The large number is the contact rate, with the strikeout rate and batting average below it. The summary sentences give the gap to the league average, the rank among qualified hitters and the type on the map.
- The 100-square grid splits plate appearances into strikeouts, walks and HBP, in-play outs, in-play hits and home runs. The left side is this hitter and the right side is the league average.
- On the contact map, look at this record's dot and the dashed same-average curve. Dots above the curve belong to hitters with a higher average. Hover over a dot to see the name.
- If you counted pitches, swings and whiffs, open "See more with pitch counts". You get the swing contact rate and the whiff rate, and with the in-zone fields the swing and contact rates in and out of the zone next to the MLB average.
- Copy the result or the link to share the current values. The link carries the record you entered and the league.
How it is calculated
Six fields from a stats line give four ratios. The denominators differ, so always check what each one divides by. Contact rate per at-bat is not an official stat on league record sites. It is a value anyone can work out from the at-bats and strikeouts in a stats line.
- Contact rate = (AB − SO) ÷ AB. The share of at-bats in which the hitter put the ball in play or hit a home run. Subtract it from 1 to get strikeouts per at-bat.
- Strikeout rate (K%) = SO ÷ PA. It divides by plate appearances, which include walks, HBP and sacrifices, so its denominator differs from the contact rate.
- Average on contact = H ÷ (AB − SO). Hits per non-strikeout at-bat, with home runs counted as hits. AVG = contact rate × average on contact always holds.
- BABIP = (H − HR) ÷ (AB − SO − HR + SF). The hit rate on balls that stayed in the park (the formula from the MLB Glossary).
| Stat | Formula | Value |
|---|---|---|
| Contact rate | (530 − 105) ÷ 530 = 425 ÷ 530 | 80.2% |
| Strikeout rate | 105 ÷ 600 | 17.5% |
| Average on contact | 150 ÷ 425 | .353 |
| BABIP | (150 − 18) ÷ (530 − 105 − 18 + 5) = 132 ÷ 412 | .320 |
| AVG | 150 ÷ 530 = 80.2% × .353 | .283 |
The 100-square grid splits plate appearances into five parts: strikeouts; walks, HBP, etc. (PA − AB − SF: walks, HBP, sacrifice bunts and catcher's interference); in-play outs (AB − SO − H + SF: reaching on an error or a fielder's choice is counted here too); in-play hits (H − HR); and home runs. To scale each part to 100 squares, the decimals are dropped first, then the leftover squares go one by one to the parts with the largest remainders, so the total is always 100. The example comes out as 17 strikeouts, 11 walks etc., 47 in-play outs, 22 in-play hits and 3 home runs.
League average contact rate (2026 regular season)
All three leagues use official league totals and the same formula. In NPB the pitcher bats in the Central League, so the Central League pitchers' batting (1,604 PA, 703 SO) is subtracted from the 12-team total, which removes most pitcher plate appearances. Pacific League pitchers' plate appearances in interleague games at Central League parks remain.
| League 2026 | PA | Contact rate | K% | Avg. on contact | BABIP | AVG |
|---|---|---|---|---|---|---|
| KBO | 56,732 | 77.7% | 19.5% | .345 | .317 | .268 |
| MLB | 183,849 | 75.1% | 22.1% | .325 | .290 | .244 |
| NPB (excluding pitchers' PA) | 62,294 | 77.2% | 20.4% | .316 | .290 | .244 |
Scaled to 100 plate appearances, the differences are easier to see. The average MLB hitter strikes out 22 times per 100 PA, two more than in KBO (20), and in return hits 3 home runs, one more. KBO has the most in-play hits of the three leagues, 21, which is why its average on contact (.345) and BABIP (.317) are both the highest.
| Per 100 PA | Strikeouts | Walks, HBP, etc. | In-play outs | In-play hits | Home runs |
|---|---|---|---|---|---|
| KBO 2026 | 20 | 12 | 45 | 21 | 2 |
| MLB 2026 | 22 | 10 | 46 | 19 | 3 |
| NPB 2026 | 20 | 10 | 48 | 20 | 2 |
Among qualified hitters, the bar is higher
A league average includes part-timers and backup catchers who play only now and then. Among regulars who reached the plate-appearance minimum (team games × 3.1), the median contact rate is higher than the league average. The ranking sentence and the dots on the map use this list.
| 2026 | Qualified hitters | Median contact rate | Highest | Lowest |
|---|---|---|---|---|
| KBO | 49 | 82.7% | Kim Ji Chan (Samsung) 90.2% | Kim Jae Hwan (SSG) 65.2% |
| MLB | 135 | 76.1% | Luis Arraez (PHI) 95.3% | Munetaka Murakami (CWS) 56.8% |
| NPB | 45 | 80.9% | Daisuke Nakashima (Rakuten) 87.0% | Bobby Dalbec (Yomiuri) 63.2% |
Luis Arraez struck out only 28 times in 596 at-bats, so he made contact in 95.3% of them. At the other end, Munetaka Murakami struck out 196 times in 454 at-bats and made contact in just 56.8%, yet he hit 35 home runs. The two show that contact rate says how often a hitter connects, not how well.
Same average, different contact
The horizontal axis of the contact map is the contact rate and the vertical axis is the average on contact. Multiplying the two gives the batting average, so dots with the same average lie on a curve that bends toward the lower right. The two pairs below hit the same average in their league, with contact rates more than 15 points apart.
| Hitter (2026) | AB | SO | HR | Contact rate | Avg. on contact | AVG |
|---|---|---|---|---|---|---|
| Geraldo Perdomo (MLB AZ) | 562 | 86 | 9 | 84.7% | .309 | .262 |
| Garrett Mitchell (MLB MIL) | 461 | 167 | 11 | 63.8% | .412 | .262 |
| Park Chan Ho (KBO Doosan) | 537 | 78 | 5 | 85.5% | .331 | .283 |
| Heo In Seo (KBO Hanwha) | 407 | 129 | 20 | 68.3% | .414 | .283 |
The league average lines split the map into four boxes. Upper right: hitters who make contact often and whose contact turns into hits. Upper left: hitters who strike out a lot but get hits when they connect. Lower right: hitters who make contact often but get fewer hits. Lower left: hitters below average on both. Each curve you cross within a box changes the average by .050.
The difference from swing-based Contact%
The contact figure on FanGraphs and most stats sites is usually swing-based. The FanGraphs Library defines Contact% as pitches on which the batter made contact divided by swings, and splits it into Z-Contact% for pitches in the strike zone and O-Contact% for pitches outside it. A swing that is not a whiff ends as a foul or a ball in play, so fouls count as contact, and a plate appearance that ends in a strikeout after several fouls still counts as several contacts on a swing basis. That is why the two contact rates differ even for the same hitter and cannot be swapped. "See more with pitch counts" in the analyzer calculates the swing-based values separately.
| MLB league totals (FanGraphs) | 2026 | 2025 | FanGraphs estimate (2010) |
|---|---|---|---|
| Swing rate Swing% | 47.4% | 47.5% | 46% |
| Swing contact rate Contact% | 77.1% | 76.9% | 80% |
| In-zone contact Z-Contact% | 86.7% | 86.0% | 87% |
| Out-of-zone contact O-Contact% | 63.1% | 61.7% | 66% |
| In-zone swing rate Z-Swing% | 67.9% | 68.3% | 65% |
| Out-of-zone swing rate O-Swing% | 32.9% | 31.5% | 30% |
| Zone rate Zone% | 41.5% | 43.6% | 45% |
| Swinging-strike rate SwStr% | 10.8% | 11.0% | 9.5% |
The estimates are the figures FanGraphs gave in a 2010 article as "rough averages", with the caveat that league averages change from year to year. To compare with today's league, use the 2026 totals. The table also shows hitters swinging at pitches outside the zone more often (O-Swing% 32.9%) while fewer pitches land in the zone (Zone% 41.5%). The KBO and NPB record sites have no league totals for swings and whiffs, so the analyzer uses only the MLB average for pitch-level comparisons.
Common mistakes
- Dividing strikeouts by at-bats for K%. The denominator of K% is plate appearances. Dividing by at-bats gives 1 − contact rate, which makes the strikeout rate look inflated for hitters who walk a lot.
- Counting walks and sacrifice bunts as at-bats. Walks, HBP, sacrifice bunts and sac flies are not at-bats. At-bats are plate appearances with these taken out.
- Removing a strikeout when the batter reaches on a dropped third strike. The scorebook still records a strikeout, and the contact rate counts it as one too.
- Treating whiff rate and SwStr% as the same thing. Whiff rate is whiffs ÷ swings, and SwStr% is whiffs ÷ all pitches. FanGraphs also warns readers not to confuse the two. The MLB 2026 averages are 22.9% for whiff rate and 10.8% for SwStr%.
- Leaving fouls out of contact. Every swing that is not a whiff made contact, so swing-based Contact% includes fouls. Counting only balls in play gives a much lower value.
- Judging from a few games. Strikeout rate needs about 60 plate appearances before it reflects skill more than chance, and BABIP needs about 820 balls in play.
Limits
- It does not look at the quality of contact, such as exit velocity or launch angle. A high average on contact can still include luck and the position of the fielders. BABIP, which leaves out home runs, depends even more on luck.
- There is no adjustment for ballpark, league or season. Compare hitters in the same league and the same year. The league averages and qualified lists are 2026 regular-season records and do not include the postseason.
- The NPB 2026 league average is the 12-team total from the official site (npb.jp) minus Central League pitcher batting. The pitcher batting totals were rebuilt from Sportsnavi's player stats by team, because npb.jp could not be reached.
- In-zone and out-of-zone counts depend on who is counting. The FanGraphs totals use the zone as judged by the data provider, so they may not match a count you made yourself.
- A high contact rate does not make a good hitter. For the overall value of hitting, which combines getting on base and power, use stats such as wOBA or OPS.
Reference date Formulas and definitions were checked against the FanGraphs Library and the MLB Glossary on 2026-10-23. League averages and qualified hitters come from the 2026 regular-season records of the KBO and NPB record sites and MLB's official statistics (Stats API). The MLB pitch-level averages were calculated from FanGraphs league totals on 2026-10-23.
Sources
- 01FanGraphs Library — Plate Discipline (O-Swing%, Z-Swing%, etc.)Definitions of Contact%, Z-Contact%, O-Contact%, Swing% and SwStr%, the 2010 rough averages, and the warning not to confuse SwStr% with whiff rate
- 02FanGraphs Library — Sample SizeRussell Carleton's thresholds: 60 PA for hitter strikeout rate, 820 balls in play for BABIP
- 03FanGraphs — MLB league totals, Plate Discipline2026 regular season: Swing% 47.4, Contact% 77.1, Z-Contact% 86.7, O-Contact% 63.1, SwStr% 10.8. For 2025 use season=2025 (checked 2026-10-23)
- 04MLB Glossary — Batting Average on Balls in Play (BABIP)(H − HR) ÷ (AB − SO − HR + SF)
- 05KBO record site — team hitting2026 regular season, 10 teams: 56,732 PA, 49,548 AB, 13,277 H, 1,366 HR, 437 SF. Strikeouts (11,054) are on the next page (Basic2)
- 06KBO record site — player hitting49 qualified hitters in 2026 (446 PA or more), with strikeouts from Basic2
- 07MLB Stats API — 2026 team hitting30 teams: 183,849 PA, 163,329 AB, 39,849 H, 5,575 HR, 40,700 SO, 1,298 SF
- 08MLB Stats API — 2026 qualified hitters135 hitters with 502 PA or more
- 09NPB — 2026 Central League team battingWith the Pacific League page (tmb_p.html), 12 teams: 57,180 AB, 13,742 H, 1,426 HR, 13,430 SO, 374 SF. PA is 63,898, the sum of batters faced in team pitching stats (tmp)
- 10NPB — 2026 Central League qualified hitters (archived copy)With the Pacific League table (bat_p), 45 qualified hitters, archived copy of 2026-10-08
- 11Sportsnavi (Yahoo! JAPAN) — NPB batting stats by clubCentral League pitcher batting totals (1,604 PA, 1,380 AB, 137 H, 703 SO) rebuilt from the batting pages of the six Central League clubs (teams/1 to 6; the link is Yomiuri)
Frequently asked questions
How is contact rate calculated?
It is (AB − SO) ÷ AB. With 530 at-bats and 105 strikeouts, that is 425 ÷ 530 = 80.2%. Walks, HBP and sacrifices are not at-bats, so they are left out, and a batter who reaches on a dropped third strike is still counted as a strikeout.
What is the average contact rate in pro baseball?
Using 2026 regular-season league totals, it is 75.1% in MLB, 77.7% in KBO and 77.2% in NPB (excluding pitchers' plate appearances). Among qualified hitters only, the median is higher: 76.1% in MLB, 82.7% in KBO and 80.9% in NPB.
How is contact rate different from strikeout rate?
The denominator is different. Contact rate divides by at-bats, while strikeout rate (K%) divides by plate appearances, which also include walks, HBP and sacrifices. So a hitter with an 80.2% contact rate does not have a 19.8% strikeout rate. With 600 plate appearances it is 105 ÷ 600 = 17.5%.
Why is it different from the Contact% on FanGraphs?
Contact% on FanGraphs is the share of swings on which the batter made contact. Fouls count as contact, so it is a different number from the at-bat-based contact rate here. If you counted swings and whiffs, "See more with pitch counts" gives the swing-based value. The MLB 2026 league average is 77.1%.
Does a high contact rate make a good hitter?
Not necessarily. In 2026, Geraldo Perdomo (contact rate 84.7%) and Garrett Mitchell (63.8%) both hit .262. Mitchell made contact less often, but 41.2% of his contact went for hits and he hit 11 home runs. For the overall value of hitting, look at wOBA or OPS.
What is the difference between average on contact and BABIP?
Average on contact is H ÷ (AB − SO), so home runs are included. BABIP is (H − HR) ÷ (AB − SO − HR + SF), which removes home runs and adds sac flies to look only at balls in play inside the park. AVG always equals contact rate × average on contact.
Are whiff rate and SwStr% the same stat?
No. Whiff rate is whiffs ÷ swings, and SwStr% (swinging-strike rate) is whiffs ÷ all pitches. The MLB 2026 averages are 22.9% for whiff rate and 10.8% for SwStr%, more than double the gap.
How many plate appearances do I need before I can trust a contact rate?
By Russell Carleton's thresholds, as summarized by FanGraphs, a hitter's strikeout rate starts to reflect skill more than chance at about 60 plate appearances. BABIP needs about 820 balls in play, close to two seasons. The analyzer adds a note when the record has fewer than 60 plate appearances.