Ethan Salas LHB SDN
Bat speed, barrel rate, exit velocity and chase rate over the last 30 games against this player's own last 100, so it reads as “is he himself right now” rather than “is he good”.
Flagged only when it has moved further than three quarters of hitters do. Movement in either direction counts.
Descriptive — the model does not use it.
Where this player ranks against the league over the same games. 100 is the best in baseball, 50 is average, and right is always better.
Rows marked ↓ are ones where a low number is good, so the bar is flipped. The figure on the right is always the real value.
Windows count games played, not calendar days.
2026-09-02 to 2026-10-07 · 329 qualified playersWhere every base hit landed, over this player's recent games. Outs are not plotted.
Distance is read off the dotted rings, not a drawn fence -- real fences vary by 100+ feet park to park, so one drawn wall would be accurate for none of them.
Statcast records where a ball was FIELDED, not where it landed, so about 4% of hits (a grounder run down in foul ground, say) are pulled back to the foul line here rather than plotted past it.
11 hits · 20 games · 2026-09-02 to 2026-10-07Hover or tap any hit for how it was struck — distance, exit velocity, launch angle, the pitch, and what that batted ball was expected to be worth.
One row per plate appearance, newest first. Strikeouts and walks included.
Expected stats say what a batted ball was worth given how hard and at what angle it was hit, whether or not it found a glove.
xBA is blank on strikeouts and walks — there is no batted ball to judge. xwOBA counts them.
51 PA · 20 games · 2026-09-02 to 2026-10-07| Date | Result | Count | Pitch | Velo | Exit Velo | Angle | Dist | Location | xBA | xSLG | xwOBA | Pitcher |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-10-07 | Strikeout swinging | 1-2 | KC | 90.2 | — | — | — | — | — | — | 0.000 | Trevor Megill |
| 2026-10-06 | Out ground ball | 0-0 | SI | 98.4 | 94.8 | -6° | 18 | Infield | 0.224 | 0.255 | 0.223 | Abner Uribe |
| 2026-10-06 | Out ground ball | 2-2 | SI | 97.6 | 85.8 | -3° | 31 | Infield | 0.173 | 0.208 | 0.163 | Antonio Senzatela |
| 2026-10-06 | Walk | 3-0 | FF | 96.4 | — | — | — | — | — | — | 0.698 | Dustin May |
| 2026-10-06 | Strikeout swinging | 3-2 | FC | 96.2 | — | — | — | — | — | — | 0.000 | Dustin May |
| 2026-10-03 | Out popup | 1-2 | SI | 99.3 | 60.2 | 76° | 49 | Infield | 0.006 | 0.007 | 0.006 | Aaron Ashby |
| 2026-10-03 | Strikeout swinging | 2-2 | CU | 89.4 | — | — | — | — | — | — | 0.000 | Jacob Misiorowski |
| 2026-10-03 | Single line drive | 0-1 | FC | 95.4 | 98.3 | 9° | 203 | CF | 0.640 | 0.703 | 0.590 | Jacob Misiorowski |
| 2026-09-30 | Strikeout swinging | 0-2 | SL | 91.7 | — | — | — | — | — | — | 0.000 | Daniel Palencia |
| 2026-09-30 | Sac Fly line drive | 1-0 | FF | 92.3 | 104.5 | 17° | 330 | CF | — | — | 0.605 | Kevin Gausman |
| 2026-09-26 | Out fly ball | 1-1 | SL | 85.6 | 84.0 | 33° | 305 | LF gap | 0.009 | 0.009 | 0.008 | Dennis Santana |
| 2026-09-26 | Single line drive | 0-0 | FF | 94.7 | 108.3 | 8° | 168 | RF | 0.686 | 0.829 | 0.661 | Jose Cabrera |
| 2026-09-26 | Single ground ball | 2-0 | FC | 91.5 | 100.6 | -5° | 22 | Infield | 0.317 | 0.366 | 0.286 | Jose Cabrera |
| 2026-09-26 | Out ground ball | 2-0 | SI | 97.0 | 105.2 | 4° | 91 | Infield | 0.571 | 0.638 | 0.529 | Jonathan Loáisiga |
| 2026-09-24 | Single line drive | 1-2 | ST | 86.8 | 94.6 | 15° | 261 | LF gap | 0.874 | 1.072 | 0.838 | Justin Wrobleski |
| 2026-09-24 | Single ground ball | 0-0 | FF | 96.4 | 60.0 | 20° | 140 | LF | 0.286 | 0.297 | 0.257 | Tyler Glasnow |
| 2026-09-24 | Strikeout swinging | 2-2 | FF | 95.7 | — | — | — | — | — | — | 0.000 | Tyler Glasnow |
| 2026-09-23 | Single ground ball | 0-1 | SI | 95.2 | 103.5 | -4° | 26 | CF | 0.359 | 0.398 | 0.323 | Yoshinobu Yamamoto |
| 2026-09-23 | Out popup | 0-1 | FS | 91.0 | 64.3 | 75° | 58 | Infield | 0.006 | 0.006 | 0.005 | Yoshinobu Yamamoto |
| 2026-09-22 | Out ground ball | 2-2 | FF | 93.6 | 70.4 | 14° | 143 | RF gap | 0.340 | 0.340 | 0.306 | Jack Dreyer |
| 2026-09-22 | Single line drive | 1-0 | FF | 96.3 | 91.6 | 14° | 243 | LF gap | 0.960 | 1.080 | 0.889 | Kyle Hurt |
| 2026-09-20 | Strikeout looking | 3-2 | CU | 83.5 | — | — | — | — | — | — | 0.000 | Bradley Blalock |
| 2026-09-20 | Incomplete PA | 0-0 | CH | 91.3 | — | — | — | — | — | — | — | Sandy Alcantara |
| 2026-09-20 | Walk | 3-2 | SL | 85.8 | — | — | — | — | — | — | 0.698 | Sandy Alcantara |
| 2026-09-20 | Out fly ball | 0-0 | FC | 91.1 | 92.8 | 28° | 359 | RF gap | 0.126 | 0.289 | 0.170 | Sandy Alcantara |
| 2026-09-19 | Single ground ball | 0-2 | FF | 98.7 | 91.2 | -4° | 18 | RF gap | 0.193 | 0.212 | 0.185 | Josh Ekness |
| 2026-09-18 | Out fly ball | 1-2 | ST | 84.9 | 92.3 | 38° | 326 | LF gap | 0.031 | 0.077 | 0.045 | Dax Fulton |
| 2026-09-18 | Out fly ball | 0-1 | FS | 82.6 | 85.7 | 38° | 301 | LF | 0.006 | 0.008 | 0.005 | Jack Ralston |
| 2026-09-18 | Out fly ball | 3-2 | FF | 96.3 | 84.4 | 55° | 215 | CF | 0.023 | 0.033 | 0.025 | Tyler Zuber |
| 2026-09-18 | Out ground ball | 0-0 | FS | 85.6 | 97.5 | -12° | 11 | Infield | 0.147 | 0.163 | 0.141 | Tyler Phillips |
| 2026-09-16 | Out fly ball | 0-2 | FF | 92.5 | 92.1 | 50° | 288 | LF gap | 0.003 | 0.003 | 0.003 | Jimmy Herget |
| 2026-09-16 | Home Run fly ball | 0-1 | FF | 96.2 | 97.6 | 42° | 372 | RF | 0.057 | 0.199 | 0.104 | Nick Frasso |
| 2026-09-16 | Out fly ball | 1-2 | FF | 92.5 | 90.4 | 62° | 210 | LF | 0.014 | 0.022 | 0.017 | Mason Adams |
| 2026-09-16 | Home Run fly ball | 0-0 | FF | 93.2 | 105.8 | 33° | 426 | CF | 0.806 | 3.167 | 1.617 | Mason Adams |
| 2026-09-15 | Strikeout swinging | 1-2 | FF | 94.8 | — | — | — | — | — | — | 0.000 | Ryan Feltner |
| 2026-09-13 | Triple fly ball | 2-2 | FF | 92.0 | 94.7 | 36° | 350 | RF | 0.117 | 0.397 | 0.213 | Logan Webb |
| 2026-09-13 | Strikeout looking | 2-2 | ST | 83.9 | — | — | — | — | — | — | 0.000 | Logan Webb |
| 2026-09-12 | Out fly ball | 3-2 | FF | 94.6 | 96.0 | 56° | 270 | CF | 0.014 | 0.025 | 0.017 | Dylan Smith |
| 2026-09-12 | Out ground ball | 2-2 | FS | 88.3 | 91.9 | -6° | 17 | Infield | 0.201 | 0.234 | 0.184 | Jason Foley |
| 2026-09-09 | Strikeout swinging | 1-2 | FF | 98.1 | — | — | — | — | — | — | 0.000 | Luis Perales |
| 2026-09-09 | Out ground ball | 2-2 | ST | 83.8 | 60.4 | 21° | 151 | CF | 0.329 | 0.356 | 0.297 | Brad Lord |
| 2026-09-07 | Force Out ground ball | 0-0 | SI | 89.4 | 71.3 | -17° | 7 | Infield | 0.054 | 0.054 | 0.054 | Jake Irvin |
| 2026-09-07 | Out fly ball | 1-0 | FF | 94.8 | 100.7 | 47° | 324 | LF gap | 0.020 | 0.066 | 0.036 | Jake Irvin |
| 2026-09-06 | Out line drive | 1-0 | SL | 87.2 | 92.5 | 25° | 331 | LF gap | 0.140 | 0.296 | 0.185 | Gerrit Cole |
| 2026-09-06 | Out popup | 2-2 | FF | 98.2 | 90.7 | 74° | 77 | Infield | 0.001 | 0.001 | 0.000 | Gerrit Cole |
| 2026-09-06 | Strikeout swinging | 3-2 | FF | 97.9 | — | — | — | — | — | — | 0.000 | Gerrit Cole |
| 2026-09-05 | Strikeout swinging | 0-2 | SL | 83.8 | — | — | — | — | — | — | 0.000 | Brent Headrick |
| 2026-09-02 | Strikeout looking | 3-2 | SL | 86.6 | — | — | — | — | — | — | 0.000 | Tony Santillan |
| 2026-09-02 | Strikeout swinging | 0-2 | ST | 86.1 | — | — | — | — | — | — | 0.000 | Brandon Williamson |
| 2026-09-02 | Out ground ball | 1-1 | ST | 85.4 | 93.4 | -3° | 27 | Infield | 0.266 | 0.310 | 0.252 | Brandon Williamson |
| 2026-09-02 | Out fly ball | 1-0 | FC | 90.8 | 99.4 | 32° | 388 | CF | 0.389 | 1.422 | 0.743 | Brandon Williamson |
How the stat settles as the window lengthens. Exact values are in the table below.
The x-axis is how many previous games are counted — 1 game on the left, 100 on the right, evenly spaced rather than to scale.
Short windows jump around; longer ones flatten out. Where a line stops moving is roughly where that stat becomes trustworthy.
Choose stats & windows
How windows work
Windows count games, not days, and never include the game
shown.
Short windows are noisier than they look — a 1-game window is fewer than
four plate appearances.
Rates like BABIP and ISO aren't calculated over spans too short to mean
anything, so a stat can show fewer columns than the window selected.
— 56 of 56 metrics,
11 of 11 windows
Dimmed cells are based on thin data — read them with caution.
Stats with almost no data anywhere in the league are left out of this table entirely. Dimmed cells clear that bar but still fall short of what the models demand. Hover any cell to see how much of the league actually has it.
| stat | 1g | 2g | 3g | 5g | 7g | 10g | 15g | 20g | 30g | 50g | 100g |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ab_game | 1.000 | 5.000 | 8.000 | 14.000 | 19.000 | 26.000 | 39.000 | 51.000 | 51.000 | 51.000 | 51.000 |
| air_ball_rate | · | · | · | · | · | 0.412 | 0.571 | 0.543 | 0.543 | 0.543 | 0.543 |
| appearances | 1.000 | 2.000 | 3.000 | 5.000 | 7.000 | 10.000 | 15.000 | 20.000 | 20.000 | 20.000 | 20.000 |
| ba | 0.000 | 0.000 | 0.143 | 0.250 | 0.353 | 0.364 | 0.314 | 0.234 | · | · | · |
| babip | 0.000 | 0.250 | 0.333 | 0.462 | 0.471 | 0.346 | 0.273 | 0.273 | 0.273 | 0.273 | |
| babip_den | 0.000 | 2.000 | 4.000 | 9.000 | 13.000 | 17.000 | 26.000 | 33.000 | 33.000 | 33.000 | 33.000 |
| babip_num | 0.000 | 0.000 | 1.000 | 3.000 | 6.000 | 8.000 | 9.000 | 9.000 | 9.000 | 9.000 | 9.000 |
| barrel | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1.000 | 1.000 | 1.000 | 1.000 | 1.000 |
| barrel_per_ab | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.026 | 0.020 | 0.020 | 0.020 | 0.020 |
| bat_speed | 71.000 | 71.044 | 66.512 | 67.691 | 67.100 | 67.590 | 67.917 | 67.283 | 67.283 | 67.283 | 67.283 |
| bip_per_pa | 0.000 | 0.400 | 0.500 | 0.643 | 0.684 | 0.654 | 0.718 | 0.686 | 0.686 | 0.686 | 0.686 |
| blast | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| blast_per_ab | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 |
| chase | 1.000 | 2.000 | 5.000 | 7.000 | 9.000 | 15.000 | 23.000 | 29.000 | 29.000 | 29.000 | 29.000 |
| chase_rate | 0.500 | 0.167 | 0.278 | 0.269 | 0.273 | 0.300 | 0.319 | 0.312 | 0.312 | 0.312 | 0.312 |
| contact | 1.000 | 5.000 | 8.000 | 14.000 | 19.000 | 26.000 | 39.000 | 51.000 | 51.000 | 51.000 | 51.000 |
| estimated_ba_using_speedangle | 0.198 | 0.261 | 0.292 | 0.319 | 0.339 | 0.257 | 0.240 | 0.240 | 0.240 | 0.240 | |
| estimated_ba_using_speedangle_sum | 0.000 | 0.397 | 1.043 | 2.626 | 4.151 | 5.770 | 7.189 | 8.388 | 8.388 | 8.388 | 8.388 |
| estimated_slg_using_speedangle | 0.231 | 0.293 | 0.335 | 0.368 | 0.395 | 0.394 | 0.387 | 0.387 | 0.387 | 0.387 | |
| estimated_woba_using_speedangle | 0.193 | 0.245 | 0.341 | 0.346 | 0.356 | 0.301 | 0.285 | 0.285 | 0.285 | 0.285 | |
| estimated_woba_using_speedangle_sum | 0.000 | 0.463 | 1.173 | 3.015 | 4.788 | 6.709 | 11.037 | 13.542 | 13.542 | 13.542 | 13.542 |
| ev_max | 81.500 | 88.150 | 91.533 | 97.480 | 97.929 | 97.640 | 97.886 | 97.744 | 97.744 | 97.744 | 97.744 |
| fly_ball | 0.000 | 0.000 | 0.000 | 1.000 | 1.000 | 2.000 | 11.000 | 13.000 | 13.000 | 13.000 | 13.000 |
| ground_ball | 0.000 | 2.000 | 2.000 | 4.000 | 6.000 | 8.000 | 10.000 | 13.000 | 13.000 | 13.000 | 13.000 |
| hard_hit | 0.000 | 0.000 | 1.000 | 5.000 | 6.000 | 7.000 | 11.000 | 14.000 | 14.000 | 14.000 | 14.000 |
| hh_ab | 0.000 | 0.000 | 0.125 | 0.357 | 0.316 | 0.269 | 0.282 | 0.275 | 0.275 | 0.275 | 0.275 |
| hit | 0.000 | 0.000 | 1.000 | 3.000 | 6.000 | 8.000 | 11.000 | 11.000 | 11.000 | 11.000 | 11.000 |
| hit_distance | 24.500 | 75.250 | 135.222 | 130.923 | 145.000 | 187.536 | 187.314 | 187.314 | 187.314 | 187.314 | |
| hr | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 2.000 | 2.000 | 2.000 | 2.000 | 2.000 |
| hr_per_fb | · | · | · | · | · | · | · | · | 0.105 | 0.105 | 0.105 |
| hr_platoon | · | · | · | · | · | · | · | 2.000 | 2.000 | 2.000 | 2.000 |
| hr_rate | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.051 | 0.039 | 0.039 | 0.039 | 0.039 |
| iso | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.229 | 0.170 | · | · | · |
| la_contact | 0.000 | 2.000 | 4.000 | 9.000 | 13.000 | 17.000 | 28.000 | 35.000 | 35.000 | 35.000 | 35.000 |
| launch_speed | 90.300 | 84.775 | 93.522 | 89.546 | 88.829 | 90.661 | 89.911 | 89.911 | 89.911 | 89.911 | |
| launch_speed_angle_sum | -4.500 | 19.000 | 14.778 | 18.385 | 17.118 | 24.393 | 24.629 | 24.629 | 24.629 | 24.629 | |
| launch_speed_sum | 81.500 | 619.100 | 777.600 | 1445.000 | 1841.300 | 2693.200 | 4328.800 | 5589.000 | 5589.000 | 5589.000 | 5589.000 |
| line_drive | 0.000 | 0.000 | 1.000 | 3.000 | 4.000 | 5.000 | 5.000 | 6.000 | 6.000 | 6.000 | 6.000 |
| out_of_zone | 2.000 | 12.000 | 18.000 | 26.000 | 33.000 | 50.000 | 72.000 | 93.000 | 93.000 | 93.000 | 93.000 |
| pull | 0.000 | 0.000 | 1.000 | 3.000 | 4.000 | 5.000 | 8.000 | 10.000 | 10.000 | 10.000 | 10.000 |
| slg | 0.000 | 0.000 | 0.143 | 0.250 | 0.353 | 0.364 | 0.543 | 0.404 | · | · | · |
| slug_window_ab | 0.000 | 0.000 | 0.000 | 0.071 | 0.053 | 0.038 | 0.051 | 0.059 | 0.059 | 0.059 | 0.059 |
| square_per_ab | 0.000 | 0.200 | 0.250 | 0.429 | 0.421 | 0.385 | 0.462 | 0.431 | 0.431 | 0.431 | 0.431 |
| squared_up | 0.000 | 1.000 | 2.000 | 7.000 | 9.000 | 14.000 | 24.000 | 31.000 | 31.000 | 31.000 | 31.000 |
| strikeout | 1.000 | 2.000 | 3.000 | 4.000 | 5.000 | 6.000 | 8.000 | 13.000 | 13.000 | 13.000 | 13.000 |
| strikeout_rate | 1.000 | 0.400 | 0.375 | 0.286 | 0.263 | 0.231 | 0.205 | 0.255 | 0.255 | 0.255 | 0.255 |
| sweet_spot | 1.000 | 2.000 | 3.000 | 7.000 | 10.000 | 15.000 | 17.000 | 22.000 | 22.000 | 22.000 | 22.000 |
| sweet_spot_per_ab | 0.000 | 0.000 | 0.125 | 0.214 | 0.263 | 0.308 | 0.205 | 0.216 | 0.216 | 0.216 | 0.216 |
| tb | 0.000 | 0.000 | 1.000 | 3.000 | 6.000 | 8.000 | 19.000 | 19.000 | 19.000 | 19.000 | 19.000 |
| tb_platoon | · | · | · | · | · | · | · | 18.000 | 18.000 | 18.000 | 18.000 |
| walk | 0.000 | 1.000 | 1.000 | 1.000 | 1.000 | 2.000 | 2.000 | 2.000 | 2.000 | 2.000 | 2.000 |
| walk_platoon | · | · | · | · | · | · | · | 2.000 | 2.000 | 2.000 | 2.000 |
| walk_rate | 0.000 | 0.200 | 0.125 | 0.071 | 0.053 | 0.077 | 0.051 | 0.039 | 0.039 | 0.039 | 0.039 |
| xbh | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 3.000 | 3.000 | 3.000 | 3.000 | 3.000 |
| xbh_rate | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.077 | 0.059 | 0.059 | 0.059 | 0.059 |
| z_swing_rate | · | · | · | · | · | 0.683 | 0.653 | 0.660 | 0.660 | 0.660 | 0.660 |
| zone_rate | · | · | · | · | · | · | 0.500 | 0.511 | 0.511 | 0.511 | 0.511 |