Who are the best baseball players of all time? Major League Baseball, America’s pastime, remains an iconic sport featuring legendary players like Nolan Ryan, Babe Ruth, Hank Aaron and Barry Bonds. As for the debate about who are the best MLB players ever, there is a lot to discuss.
This isn’t about the Baseball Hall of Fame. Unlike voters deciding who is enshrined into Cooperstown, we’re focused on a baseball player’s pure accomplishments. As for the use of performance-enhancing drugs like steroids or greenies (amphetamines), it merits consideration when determining the best MLB players of all time. However, ties to PEDs won’t be what takes one of the greatest baseball players ever off our list.
With all of that in mind, let’s examine the best MLB players ever.
What is the best MLB team of all time?
Just Missed: Bob Gibson, Josh Gibson, Roberto Clemente, Cy Young, Roger Hornsby
22. Alex Rodriguez, New York Yankees and Seattle Mariners
- Alex Rodriguez career stats: 696 home runs, 3,115 hits, 2,086 RBI, .295 batting average
While Alex Rodriguez might be one of the most hated baseball players ever, he must still also be recognized as one of the all-time greats. A three-time AL MVP, Rodriguez earned 14 All-Star selections in his career and fell just four home runs shy of the exclusive 3000/700/200 club. Steroids are an undeniable part of Rodriguez’s legacy, but he still has the fourth-most RBIs (2,086) in the history of baseball.
Related: Highest-paid MLB players in 2023
21. Albert Pujols, St. Louis Cardinals
- Albert Pujols career stats: 703 home runs, .918 OPS, .296 batting average, 2,218 RBI
Albert Pujols finished his career with the St. Louis Cardinals and he’s a rare example of a final season elevating one of the best baseball players of all time. The 2022 campaign allowed Pujols to reach 700 career home runs, an achievement the future Hall of Famer certainly earned. A two-time World Series champion and three-time NL MVP, Pujols with the second-most RBIs (2,218) and the fifth-most doubles (686) in baseball history.
20. Frank Robinson, Cincinnati Reds and Baltimore Orioles
Nicknamed “The Judge”, Frank Robinson delivered absolute pain to baseballs and put fear into pitchers’ eyes for two decades. Signed by the Cincinnati Reds to a $3,500 contract in 1953, Robinson would only become one of the best outfielders of all time. A 14-time All-Star selection with a Triple Crown (1966), and all three MVP awards (1961 AL MVP, 1966 NL MVP and 1966 World Series MVP), he is an all-time great.
He also broke barriers, becoming the first African American manager in MLB history. It’s no surprise the Cincinnati Reds, Baltimore Orioles and Cleveland Guardians all have status honoring him. One of the best baseball players of all time deserves it.
- Frank Robinson stats: 586 home runs,1,812 RBIs, 528 doubles, .926 OPS, 154 OPS+
19. Joe DiMaggio, New York Yankees
Few MLB history ever hit like Joe DiMaggio. The New York Yankees centerfielder spent his entire career in pinstripes and he made them all memorable. A 13-time All-Star and nine-time World Series champion with three AL MVP awards, voting him onto the MLB All-Century Team was easy. The longest hitting streak in MLB history, 56 games, belongs to DiMaggio and it’s no surprise many viewed him as one of the best Yankees ever, including Marilyn Monroe.
- Joe DiMaggio stats: 2,214 hits, 131 triples, 361 home runs, 1,537 RBIs, .977 OPS, 155 OPS+
Related: What is the highest batting average ever?
18. Roger Clemens, Boston Red Sox
As we mentioned from the start, the issues that prevented Hall of Fame voters from honoring some of the best MLB players ever from enshrinement aren’t an issue for us. The Rocket is a seven-time Cy Young Award winner, which should tell you everything about his dominance. He won two World Series rings with the Yankees, finished as the MLB ERA leader seven times and he holds the MLB record for 20-strikeout games in 9 innings (twice). If you’re looking for the best starting pitchers ever, Clemens is squarely near the top of the list.
- Roger Clemens stats: 354-184 record, 3.12 ERA, 4,672 strikeouts, 1.17 WHIP, 7.7 H/9, 2.96 K/BB
17. Rickey Henderson, Oakland Athletics
Rickey Henderson might be one of the most underrated players in MLB history when it comes to discussion of the all-time greats. MLB is long past its days of players stealing 70-plus bases, something Henderson did seven times in his career. He is the all-time leader in steals (1,406) and to put that number in perspective, he swiped more bags than Joe Morgan (689) and Kenny Lofton (622) combined. A 10-time All-Star selection and the all-time leader in runs scored (2,295) and lead-off home runs (81), no one is ever touching Henderson’s single-season or career records.
- Rickey Henderson stats: 3,055 hits, 297 home runs, 2,190 walks, 2,295 runs, .820 OPS, 127 OPS+
16. Greg Maddux, Chicago Cubs and Atlanta Braves
Greg Maddux, aka “Mad Dog”, delivered a four-year stretch as we’ve really never seen. The 6-foot righty won four consecutive NL Cy Young Awards, combining for a 1.98 ERA and 0.953 WHIP across 946.2 innings from 1992-’95. He also played his position like no other, winning the Gold Glove Award 18 times. If all of that isn’t enough, the baseball world named a shutout under 100 pitches the ‘Maddux’. If you’re building an all-time MLB rotation, Maddux is in it.
- Greg Maddux stats: 355-227, 3.16 ERA, 3,371 strikeouts, 1.14 WHIP, 6.1 K/9, 3.37 K/BB
15. Honus Wagner, Louisville Colonels and Pittsburgh Pirates
Incredibly, the Honus Wagner baseball card is even more historic than one of the best baseball players of all time. Wagner dominated the game like few others since its creation. Nicknamed “The Flying Dutchman”, he is widely considered the best shortstop in MLB history.
- Honus Wagner stats: 3,420 hits, 252 triples, 101 home runs, 1,732 RBIs, 723 steals, .858 OPS, 151 OPS+
Written by experts, for sports fans who want a FREE daily newsletter worth reading. Get Sportsnaut First today!
14. Mike Trout, Los Angeles Angels
Mike Trout is the best MLB player of his generation and he might be even higher on the all-time list of best baseball players in a few years. Drafted 25th overall in the 2009 MLB Draft, Trout struggled in his first 40 games (.220 BA, 89 OPS+). Everything clicked for him after that. Trout delivered the best rookie season in MLB history (168 OPS+, 49 steals, 30 home runs) and finished second in MVP voting. He’s credited with the best WAR in a season (10.5, 2012) and earned a spot in the Hall of Fame before he even turned 30. It’s just a shame injuries and a terrible Angels’ organization prevent him from achieving even more fame and recognition.
- Mike Trout stats: 1,543 hits, 350 home runs, 896 RBIs, 204 steals, 1.002 OPS, 176 OPS+
13. Randy Johnson, Seattle Mariners and Arizona Diamondbacks
“The Big Unit” struck fear into a batter the moment he hit the mound. At 6-foot-10 with a fastball that literally destroyed a bird mid-flight, hitters feared him for a reason. Johnson won five Cy Young Awards, a World Series MVP and led MLB in strikeouts nine times. Incredibly, he got better with age. From his ages 29-44 (1993-2008), Johnson compiled a 3.08 ERA with a 1.1 WHIP, 11.1 K/0 and 4.19 K/BB. Just an incredible hurler and definitively one of the best pitchers ever.
- Randy Johnson stats: 303-166, 3.29 ERA, 4,875 strikeouts, 1.17 WHIP, 10.6 K/9, 3.26 K/BB
Related: What is the fastest pitch ever?
12. Ken Griffey Jr., Seattle Mariners and Cincinnati Reds
The Seattle Mariners knew they were getting a star with the No. 1 pick in the 1987 MLB Draft and Ken Griffey Jr. still blew past the wildest expectations. “The Kid” had the sweetest swing in baseball and it made him a 13x All-Star selection and 7x Silver Slugger Award winner. What made Griffey Jr. one of the most beloved MLB players ever is his enthusiasm for the game and the unmatched effort he played with. That same effort resulted in injuries that kept him from reaching 3,000 hits and reaching 700 home runs, but you know he wouldn’t change a thing.
- Ken Griffey Jr stats: 2,781 hits, 630 home runs, 1,836 RBIs, 184 steals, .907 OPS, 136 OPS+
11. Pedro Martinez, Boston Red Sox and New York Mets
A 5-foot-11 pitcher isn’t supposed to be this dominant. When compiling our list of the best MLB players ever, though, Martinez earned his placement right near the top. Longevity is important and that’s one thing that prevents Martinez from being even higher. However, the two-year stretch from 1999-2000 is arguably the best ever by a pitcher (1.90 ERA, 597 strikeouts, 8.65 K/BB in 430.1 innings). Because of it, we’re willing to call him the best pitcher ever in the Modern era.
- Pedro Martinez stats: 219-100. 2.93 ERA, 3,153 strikeouts, 1.05 WHIP, 10.0 K/0, 4.15 K/BB
10. Mickey Mantle, New York Yankees
Mickey Mantle, nicknamed “The Commerce Comet”, served as the face of the New York Yankees dynasty. He is arguably the most accomplished player in MLB history, a seven-time World Series champion and a 20-time All-Star selection. He could slug home runs with the best of them, serving as the AL leader in home runs four times (1955, ’56, ’58, 1960) and won the 1956 Triple Crown. He was also clutch in the World Series, drilling 18 home runs.
- Mickey Mantle stats: 2,415 hits, 536 home runs, 1,509 RBIs, 153 steals, .977 OPS, 172 OPS+
Related: MLB games today – MLB schedule, TV info, scores, and key dates
9. Walter Johnson, Washington Senators
The debate over who is the best pitcher ever features a lot of hurlers from the past 40 years. That’s why Walter Johnson, who threw his last pitch in 1927, stands out. He simply played in a different era, pitch counts and managing innings weren’t a thing. It’s why he holds the record for most career shutouts (110), 20 more than the second-closest hurler. While his velocity wouldn’t seem like much today, he was certainly viewed as the equivalent of a Jacob deGrom during his era.
- Walter Johnson stats: 417-279, 2.17 ERA, 3,509 strikeouts, 1.06 WHIP, 5.3 K/9, 2.57 K/BB
8. Stan Musial, St. Louis Cardinals
Stan the Man could do anything he wanted with a baseball bat. The greatest St. Louis Cardinals player ever hit almost everything for nearly two decades, posting a .300-plus batting average every season from 1941-1958. He ranks third all-time in runs produced, trailing Barry Bonds and Babe Ruth (ESPN). He earned 24 All-Star selections, won seven NL batting titles and finished with three World Series rings. There’s no question he belongs in the lineup of best MLB players ever.
- Stan Musial stats: 3,630 hits, 475 home runs, 1,951 RBIs, .976 OPS, 159 OPS+
Related: Longest baseball games ever
7. Ted Williams, Boston Red Sox
Is Ted Williams the greatest pure hitter who ever lived? He’s certainly the best player in Boston Red Sox history. If you want to know how special he was, Williams’ book “The Science of Hitting” is still recommended reading for MLB players today. He spent his entire MLB career with the Red Sox, then got drafted for World War II, before returning to baseball. The all-time leader in OBP (.482), Williams slugged a .328/.458/.584 line as a 38-year-old. The total stats would be even higher if not for three years in the military.
- Ted Williams stats: 2,654 hits, 521 home runs, 1,839 RBIs, 1.116 OPS, 191 OPS+
Related: World Series odds
6. Lou Gehrig, New York Yankees
The “Iron Horse” didn’t get to further cement his status as one of the best baseball players of all time because of ALS. However, everything he did before that and his iconic speech are more than enough. A six-time World Series champion and a member of the Major League Baseball All-Time Team, Gehrig’s most consecutive games MLB played streak (2,130) is likely never broken by Cal Ripken, Jr. if not for ALS. Paired with Babe Ruth, Gehrig’s 149 RBI per 162 game average is one of the highest in MLB history and his stats in 17 years are absurd.
- Lou Gehrig stats: 2,721 hits, 493 home runs, 1,995 RBIs, 102 steals, 1.080 OPS, 189 OPS+
5. Ty Cobb, Detroit Tigers
Nicknamed “The Georgia Peach”, Ty Cobb was a hitting machine. He holds the MLB record for batting average, ranks second on the all-time hit list (4,189) and he posted a .400 batting average in consecutive seasons (1911-’12). MLB players racked up hits during Cobb’s era, but he was king with the most batting titles ever (12).
Cobb was also dangerous on the basepaths, both because he could steal and he’d spike the fielder without any regrets. In Babe Ruth’s words, “Cobb is a p—k. But he sure can hit. God Almighty, that man can hit.”
- Ty Cobb stats: 4,189 hits, 117 home runs, 1,944 RBIs, 897 steals, .366 BA, .944 OPS, 168 OPS+
4. Barry Bonds, Pittsburgh Pirates and San Francisco Giants
Barry Bonds paid the price for steroid allegations, being kept out of the Hall of Fame and being blackballed from MLB after an age-42 season that saw him hit 28 home runs with a 1.045 OPS. If he isn’t essentially forced to retire, there is no doubt Bonds chases 800 home runs and eclipses the 3,000-hit and 2,000-RBI marks.
The thing is, he doesn’t need those accomplishments. Bonds is the all-time leader in intentional walks (688) and that’s more than Albert Pujols (315) and Stan Musial (298) combined. He also holds the record for most career walks (2,558) and is the only member of the 500 homer-500 steals club.
He used steroids and it proved costly, doing far more damage to his reputation than others in MLB who benefitted from it (Bud Selig, Tony La Russa, Joe Torre). But even if you take away the numbers after Bonds allegedly started using steroids (1998) – 1,750 hits, 374 home runs, 417 steals and .959 OPS – Bonds is steal one of the best outfielders ever.
- Barry Bonds stats: 2,935 hits, 762 home runs, 1,996 RBIs, 514 stolen bases, 1.051 OPS, 182 OPS+
3. Hank Aaron, Atlanta Braves
Recognized by many as the true home run king, Hank Aaron hit baseballs out as no one saw before him. After playing in the Negro league, Aaron made his MLB debut in March 1954. He would hit just 13 home runs in his first season, slashing .280/.322/.447. After that, Aaron was the best player in MLB.
Aaron is atop the MLB record books with the most career RBIs (2,297) and he holds the all-time record for total bases (6,856). He deserves to be called the home run king, especially because of the era he played in. One thing is for certain, Aaron is one of the best players in baseball history and his MLB record for All-Star Game Appearances (25) adds to his case.
- Hank Aaron stats: 3,771 hits, 755 home runs, 2,297 RBIs, 240 steals, .928 OPS, 155 OPS+
2. Willie Mays, San Francisco Giants
Willie Mays is most famous for “The Catch” and his spectacular play in the Polo Grounds deserves all of the recognition, that play also shows so much more. It showcases the athleticism and hustle he played with for nearly 20 years with the Giants, delivering a play of play that helped him win 12 Gold Glove Awards and lead the NL in home runs and steals four times. He is unquestionably the best center fielder ever and if defense is valued highly, the greatest outfielder in MLB history.
- Willie Mays stats: 3,293 hits, 660 home runs, 1,909 RBIs, 338 steals, .940 OPS, 155 OPS+
1. Babe Ruth, Boston Red Sox and New York Yankees
It should come as no surprise that “The Sultan of Swat” tops our list of the best baseball players of all time. He posted Hall of Fame-caliber numbers in his first five seasons with the Boston Red Sox (981 OPS, 190 OPS+. Then, on Dec. 26, 1919, Red Sox owner Harry Frazee traded Babe Ruth to the New York Yankees for $100,000 cash.
“The Bambino” would only go on to be the best MLB player ever. He joined the greatest dynasty in baseball history. Ruth won four World Series titles with the Yankees, giving him seven rings in his career and sending the Red Sox into decades of bad luck. Across 15 seasons in the Yankees lineup, Ruth posted an otherworldly 1.195 OPS, 209 OPS+ with 659 home runs and 1,978 RBIs.
- Babe Ruth stats (hitting): 2,873 hits, 714 home runs, 2,214 RBIs, 123 steals, 1.164 OPS, 206 OPS+
We still haven’t even gotten to his accomplishments on the mound. Across 10 seasons as a pitcher, Ruth posted a Cooperstown-worthy 2.28 ERA with 107 complete games, 17 shutouts and he threw pure filth on the mound in the World Series. He was Shohei Ohtani a century ahead of schedule. There’s no doubt that Babe Ruth is the greatest baseball player ever.
- Babe Ruth pitching stats: 94-46, 2.28 ERA, 488 strikeouts, 3.6 K/9, 1.11 K/BB