CHICAGO — Mike Trout was working out in his home batting cage back in New Jersey one day this winter, with his father feeding balls into the machine.
They were grinding away when his father stopped him, because something wasn’t right.
“Hey, go look at that baseball card over there, from when you were a rookie,” his father told him. “See where your hands are?”
As Trout recalled the story, he added: “He was right.”
It wasn’t news to Trout. His hand position is something he’s been working to change since last year. As he heads into the Angels’ season opener on Thursday, Trout will begin to show the baseball world if he’s made the adjustments successfully.
“I’m trying to consistently get to where I feel like myself for the whole year,” Trout said. “I feel like, if I get back to that, it’s gonna be really fun.”
While much of the narrative surrounding Trout in recent years has rightly been the injuries that have cost him time on the field, the underlying story has been that even when Trout has been on the field, he’s hasn’t been at the same otherworldly level.
“I haven’t really felt like myself in the last few years,” Trout said. “I don’t know exactly how it got off track. Just over time, I couldn’t pinpoint exactly what it is. But when it’s on track, it feels like my old self.”
Obviously, Trout is something of a victim of his own success. He won three American League MVP Awards – and was the runner-up four other times – in his first 10 seasons, putting up numbers so phenomenal that he’s already a slam-dunk Hall of Famer.
Through 2022, which includes playing just 36 games before suffering a strained calf that cost him most of the 2021 season, Trout had a career .303 average, with an OPS of 1.002.
In the 111 games he played in 2023 and 2024, he hit .252 with an .860 OPS.
There’s nothing wrong with an .860 OPS. Only 15 major-league players did better than that last season over 500 plate appearances.
If you ask anyone around the Angels if they’d sign up for 500 Trout plate appearances and an .860 OPS in 2025, they’d take it in a heartbeat. The last Angels player other than Trout or Shohei Ohtani to produce an .860 OPS over a full season was Kendrys Morales in 2009.
To Trout, though, that’s not good enough.
His sights are set on being his “old self,” and that starts with his hands.
To put it simply, sometime in the last few years, Trout began wrapping his hands. As he loaded to swing, his hands went too far behind his head, and that affected his path back to the ball.
“When I go to swing, it’s up and around instead of through the ball,” Trout said. “It like my hands are on a track. If they get off track, and I swing across my body, sometimes I lose vision when I rotate, and I have one eye on the ball instead of two. That’s why I was swinging and missing so much.”
Through 2022, Trout had a strikeout rate of 22.0% and a walk rate of 14.9%. Over the past two seasons, he’s struck out 26.8% of the time and walked 12.5%.
One of the particular trouble areas has been high fastballs. Three of the highest whiff rates of his career on fastballs in the upper third of the zone have come since 2021. It’s worth noting that he slowed the trend last year – in a small sample size – with a percentage that was just about his overall career rate.
“A few years ago, I never really chased,” Trout said. “I had a tight strike zone. I knew my zone and really didn’t get out of it. Yeah, I had some times where I would chase, either just getting too big at the plate, trying to hit the ball so far. You can’t be perfect every single time.
“I know if I can get back to having good at-bats, not swinging at the balls in the dirt, the way we’ve worked on it in the spring, it’ll get back going.”
Trout has been working at this for a few years, and at times it’s looked like he’s been on his way. He thought something clicked in June 2023, when he had an OPS of 1.121 over a 14-game stretch. Then he broke his hamate bone, and he played just one more game the rest of the season.
Last season, when Trout was on the injured list with a torn meniscus, the Angels presented him with a plan to get him back on track. Trout suffered a setback and never got a chance to put the plan into action.
Once he was clear of the second surgery, early in the offseason, Trout began intensive work to fix the problem. Trout and Angels hitting coach Johnny Washington would fire videos back and forth almost every day.
Washington described the change as simply trying to “rejuvenate” Trout’s swing to the way it used to be.
“Basically, the idea would be to try and identify some of the movements that he had in the past, when we all saw Mike Trout be Mike Trout,” Washington said. “How close can we get to some of those and replicate some of those moves to where we can get some of those outcomes as well?”
Washington said they are trying to get Trout to be “freer with his path” and less “restricted.” Overall, he’s been happy that Trout is so open to attacking the issues.
“Mike is a tremendous guy,” Washington said. “He wants to evolve. He wants to adapt. He wants to be great. He is great. I think as you continue to search, trying to find greatness, I don’t think you ever stop learning.”
Trout said he has been methodical with the hitting coaches this spring, making sure to ingrain the proper swing. When they see something wrong, they stop him. When he feels something wrong, he gets out of the cage.
Early this spring, Trout hit a homer to right field. He said that was one of the indicators that he’s getting back to himself.
“I haven’t hit a ball like that for years, the other way with some thump,” Trout said.
Despite that, it’s fair to wonder how much of what’s happened to Trout is because of what he calls “a bad habit,” and how much is simply because he’s now 33, and can’t keep up to the standard he set when he was 27.
The combination of his age and his injuries makes it easy for skeptics to assume that he’s never going to be That Guy again.
Trout took note when MLB Network listed him No. 39 in its ranking of the top 100 players right now. That would have seemed ludicrous a few years ago.
“People can say what they want,” Trout said. “I know what I’m capable of. I know what I feel. I know that when my thing’s right, I feel like I’m best player in the league. I still feel that way. People are always going to write what they write. Yeah, haven’t been on the field the last few years. It’s been tough. But I feel really good this spring.”
Trout said the move to right field has been a positive. He believes it will result in less wear and tear on his body.
If Trout can even come close to playing a full season at the level he was a few years ago, it would go a long way toward both restoring his status in the game and also helping to lift the Angels out of their stretch of mediocrity.
While it might have been fair back in 2016 to say the Angels were failing Trout by a lack of support, in recent years it’s been mutual. Trout has been unable to give the Angels what they’ve needed from him. He’s played just 41% of their games in the last four seasons.
It’s not just about a lack of production in one spot, but the way his absence impacts the other hitters.
Outfielder Taylor Ward, who had to take on more of the run production responsibility when Trout was out, said having Trout affects the rest of the lineup.
“I definitely think there’s a difference in way we get pitched,” Ward said. “If you’re hitting in front of him, I think that you get pitched way differently than when you’re hitting behind him. But yeah, it’s a big difference just all around with his presence, being on the field, off the field. I just think it’s huge for our club. The way we feel and the way the other team feels, too.”
First baseman Nolan Schanuel only got to be in the lineup with Trout for a month in his rookie season, and he could tell the difference.
“When he was in the lineup last year, we could just feel a weight lifted off our shoulders,” Schanuel said. “It was more like we have protection. And he’s a great guy in the clubhouse, great leader, and even better leader on the field. Looking forward to get out there with him this season and see the run we can make.”
/*! This file is auto-generated */!function(d,l){“use strict”;l.querySelector&&d.addEventListener&&”undefined”!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll(‘iframe[data-secret=”‘+t.secret+'”]’),o=l.querySelectorAll(‘blockquote[data-secret=”‘+t.secret+'”]’),c=new RegExp(“^https?:$”,”i”),i=0;i<o.length;i++)o[i].style.display="none";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute("style"),"height"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):"link"===t.message&&(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
/*! This file is auto-generated */!function(d,l){“use strict”;l.querySelector&&d.addEventListener&&”undefined”!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll(‘iframe[data-secret=”‘+t.secret+'”]’),o=l.querySelectorAll(‘blockquote[data-secret=”‘+t.secret+'”]’),c=new RegExp(“^https?:$”,”i”),i=0;i<o.length;i++)o[i].style.display="none";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute("style"),"height"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):"link"===t.message&&(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
Pitcher Ryan Johnson to skip minors as Angels firm up Opening Day roster
/*! This file is auto-generated */!function(d,l){“use strict”;l.querySelector&&d.addEventListener&&”undefined”!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll(‘iframe[data-secret=”‘+t.secret+'”]’),o=l.querySelectorAll(‘blockquote[data-secret=”‘+t.secret+'”]’),c=new RegExp(“^https?:$”,”i”),i=0;i<o.length;i++)o[i].style.display="none";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute("style"),"height"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):"link"===t.message&&(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
/*! This file is auto-generated */!function(d,l){“use strict”;l.querySelector&&d.addEventListener&&”undefined”!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll(‘iframe[data-secret=”‘+t.secret+'”]’),o=l.querySelectorAll(‘blockquote[data-secret=”‘+t.secret+'”]’),c=new RegExp(“^https?:$”,”i”),i=0;i<o.length;i++)o[i].style.display="none";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute("style"),"height"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):"link"===t.message&&(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
Jack Kochanowicz gets final spot in Angels’ rotation; Reid Detmers to bullpen
/*! This file is auto-generated */!function(d,l){“use strict”;l.querySelector&&d.addEventListener&&”undefined”!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll(‘iframe[data-secret=”‘+t.secret+'”]’),o=l.querySelectorAll(‘blockquote[data-secret=”‘+t.secret+'”]’),c=new RegExp(“^https?:$”,”i”),i=0;i<o.length;i++)o[i].style.display="none";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute("style"),"height"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):"link"===t.message&&(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);