Teen movies and TV shows are notorious for casting actors who haven’t set foot inside of a high school in years. It’s easy to imagine why they might do it: older actors have more experience and spare us from watching the awkward teenagers on screen, but sometimes these casting choices pushed the limits of our suspension of disbelief. This list is nowhere near complete, but it does include some of the most egregiously over-aged actors from the 1970s to today.
Patrick Swayze in 'The Outsiders'
The teen gang drama “The Outsiders” was chock full of some of the hottest actors of the 80’s (and today), and most of them were actually close to age-appropriate. The notable exception was Patrick Swayze as Ponyboy’s older brother and guardian, Darry. At 30, Swayze was a full ten years older than S. E. Hinton’s novel called for, and almost old enough to be the 14-year-old Ponyboy’s father.
Brian Backer in 'Fast Times at Ridgemont High'
“Fast Times” was inspired by director Cameron Crowe’s experiences going undercover as a high schooler at age 22, so in a way it makes sense that most of the actors were also older than they should have been. None stand out quite so much as Brian Backer, who at 25 was not only way too old to play shy sophomore Mark, but even older than Phoebe Cates, Sean Penn, and Judge Reinhold, all of whom played upperclassmen.
Judd Nelson in 'The Breakfast Club'
Judd Nelson was a total scene stealer as “the Criminal” John Bender in “The Breakfast Club,” and his movie-ending fist pump is nothing short of iconic, but what hasn’t aged as well is John’s romantic connection with Molly Ringwald’s Claire after he spends the whole movie belittling her. It gets even skeevier when you realize that Nelson was 25 at the time, playing opposite Ringwald at only 16.
Alan Ruck in 'Ferris Bueller's Day Off'
Alan Ruck was pushing 30 and looked every bit of it when he played Ferris Bueller’s uptight best friend Cameron in the 1986 film. This is obviously way too old for a high school senior, but you could make the case that Ruck’s age was actually an asset to his character, since a 30-year-old who’s afraid to stand up to his father is so much more pathetic than an 18-year-old.
Gabrielle Carteris in 'Beverly Hills, 90210'
“Beverly Hills, 90210” premiered in 1990 and became the first hugely popular teen TV drama, so it probably deserves a significant share of the blame for the age-inappropriate casting of its many imitators. The show’s most questionable casting choice was Gabrielle Carteris, who was 29 at the start of Season 1, and 32 by the time her character, valedictorian Andrea Zuckerman, graduated from high school in Season 3.
Ian Ziering in 'Beverly Hills, 90210'
He wasn’t quite as old as Carteris, but at 26 in 1990, Ian Ziering was still way too old to play “90210’s” Steve Sanders. Steve’s immature, short-sighted schemes throughout the show’s early seasons could be excused coming from a teen, but it’s hard to watch Ziering’s portrayal without wishing that his character would just grow up already.
Sasha Jenson in 'Dazed and Confused'
The joke of Matthew McConaughey’s stoner character, David Wooderson, in “Dazed and Confused” is that he’s way too old to be hanging out with high schoolers. What’s even funnier is that one of those high schoolers, Don Dawson, was played by actor Sasha Johnson who is actually five years older than McConaughey!
Tom Hanks in 'Forrest Gump'
Tom Hanks was 38 in 1994, a perfectly appropriate age to play the beloved character of Forrest Gump in the bus stop scenes and beyond. However, Hanks also played Forrest as a high schooler in the famous “Run, Forrest, Run!” scene without really any efforts at de-aging his appearance, ranking him among the oldest actors to play a teenager in recent film history.
Shannon Elizabeth in 'American Pie'
In “American Pie,” Jason Biggs and the actors playing his male friends were all in their late teens or very early twenties, but the women they pursued were mostly played by actresses in their mid-twenties, including Tara Reid and Alyson Hannigan, adding another layer of hilarity to the boys’ quest to gain some sexual experience. The oldest, though, was 25-year-old Shannon Elizabeth as foreign exchange student Nadia, who flaunted a body that set unrealistic beauty standards for any teens in the audience.
Linda Cardellini in 'Freaks and Geeks'
Like Rizzo in “Grease,” Lindsay from “Freaks and Geeks” needed to display a different maturity level than her peers, so casting 24-year-old Linda Cardellini was a defensible choice. That said, her age did stick out like a sore thumb next to John Francis Daley, who at 14 was actually the right age to play her brother Sam.
Gabrielle Union in 'Bring it On'
No shade to Gabrielle Union, who just doesn’t seem to age and could maybe still get away with playing a high schooler today, but when she played East Compton Clover cheerleader Isis in 2000’s “Bring it On” she was already 28, a full ten years older than Kirsten Dunst who played her rival, Torrance.
Keiko Agena in 'Gilmore Girls'
As Rory Gilmore’s best friend Lane, Keiko Agena saw her character grow up fast, first under the pressure of her mother to focus on schoolwork, and later as she married her rocker boyfriend Zack and gave birth to twins in her early twenties. Agena herself, though, was more than ten years older than her character and eight years older than cast mate Alexis Bledel.
Everyone in 'Wet Hot American Summer'
This one was intentional and played for humor, but almost the entire cast of the 2001 cult comedy film “Wet Hot American Summer,” including future stars like Paul Rudd, Amy Poehler, Bradley Cooper, and Elizabeth Banks, were entirely too old to play teenage summer camp counselors. When Netflix decided to revive the movie as a series in 2015, set during the same summer, they kept the cast intact, gifting us with a bunch of high schoolers played by forty-somethings.
Tobey Maguire in 'Spider-Man'
At this point, we’ve seen the Spider-Man origin story so many times that we know it by heart: lonely high schooler Peter Parker gets bitten by a radioactive spider and gains superpowers. The keyword here is “high schooler.” The MCU got the age pretty close with 19-year-old Tom Holland in 2016’s “Captain America: Civil War,” but not so much with the first bigscreen Spider-Man in 2002. Tobey Maguire was closing in on 27 when the movie premiered.
Ben McKenzie in 'The O.C.'
As the “90210” for a new generation, “The O.C.” committed many of the same age-inappropriate casting sins. The worst was nearly-25-year-old Ben McKenzie, who played the troubled-yet-sensitive Ryan Atwood starting when the character was just a sophomore in high school. McKenzie was only a couple of years older than co-stars Adam Brody and Rachel Bilson, but he was almost eight years older than Mischa Barton who played his love interest Marissa Cooper throughout the first three seasons.
Kristen Bell in 'Veronica Mars'
Kristen Bell is another actress who doesn’t really seem to age, but at 24 in 2004 she was definitely too old to play teen detective Veronica Mars, and one of the oldest actors of the series's high school cast. The show wisely made up for some of the age disparity by having Veronica move on to college in Season 3, and advancing the plot nine years for its 2013 crowd-funded movie revival.
Jon Heder in 'Napoleon Dynamite'
What’s more awkward than keeping tots in your fanny pack or trying to show off your sweet nunchuck skills? How about playing a 16-year-old when you’re actually 26? That’s the situation unknown actor Jon Heder found himself in when he joined the cast of “Napoleon Dynamite,” but luckily for him it turned out to be comedy gold and helped him land more awkward roles in the bigger-budget movies “The Benchwarmers” and “Blades of Glory.”
Taylor Kitsch in 'Friday Night Lights'
NBC’s “Friday Night Lights” featured several actors who were way too old for their roles, but most of their characters graduated from high school early in the show’s run. Not so for Taylor Kitsch’s Tim Riggins, who spent three seasons at running back for the Dillon Panthers despite the fact that Kitsch was already 25 in Season 1.
Jason Earles in 'Hannah Montana'
The Disney Channel’s “Hannah Montana” was a star-making vehicle for fresh-faced 14-year-old Miley Cyrus and a career revival for 45-year-old Billy Ray, but we’re still weirded out by cast member Jason Earles who played what was supposed to be Miley’s teen brother Jackson. The mop-top haircut could only go so far in masking Earles’ actual age of 29, more than double Miley’s and only 15 years younger than Billy Ray’s.
Jonah Hill in 'Superbad'
With his cargo shorts and white-boy ‘fro, Jonah Hill’s Seth actually made for a pretty convincing 18-year-old in the 2007 hit “Superbad.” It might surprise you to learn that Hill was already 23 at the time, just one year younger than Seth Rogen and almost six years older than “McLovin” actor Christopher Mintz-Plasse. Maybe he’s the one who should have had the fake ID!
Cole Sprouse in 'Riverdale'
Most of us have strong memories of Cole Sprouse as a kid in things like “Big Daddy,” “Friends,” and “The Suite Life of Zack & Cody,” so it’s hard to imagine him actually being too old for a role. Nonetheless, Sprouse is one of the more senior cast members as Jughead on “Riverdale,” starting his time on the show at 25 and still going strong playing a high schooler at 27.
Christian Navarro in '13 Reasons Why'
Christian Navarro’s Tony was probably the most mysterious character in Season 1 of “13 Reasons Why.” He almost only appeared in scenes alone with Clay, constantly made vague and enigmatic comments, and looked way too old to be in high school, sparking fan theories that he was some kind of ghost or hallucination. Some of this mystery was surely intentional, but you have to wonder if the producers might have wished they had cast an actor younger than 26 for the role.
Jeff Conaway in 'Grease'
Let’s be honest, all of the actors playing our favorite Rydell High students would be right at home on this list, but a couple of them stand above the rest. One of those is Jeff Conaway, who played the T-Birds’ resident street racer Kenickie. Conaway was going on 28 when “Grease” premiered in 1978, but his forehead lines made him look even older. Conaway isn’t even the movie’s worst offender, though. That honor goes to…
Stockard Channing in 'Grease'
Admittedly, the role of the Pink Ladies’ leader Betty Rizzo required a jaded world-weariness that most teens don’t possess, and Stockard Channing knocked her performance out of the park, but were we really supposed to believe that the 33-year-old was a high school senior? You can’t help but feel that Rizzo’s teen pregnancy scare would have been more impactful if the character was portrayed by an actual teenager.
Maya Erskine and Anna Konkle in 'PEN15'
Hulu’s new comedy series “PEN15” turns the idea of age-inappropriate casting on its head. In one sense, the show is among the best at casting actors the right age for their characters, as most of its middle school characters are played by real middle schoolers. On the other hand, creators and stars Maya Erskine and Anna Konkle are both 32 and play 13-year-old versions of themselves, providing the source of most of the show’s humor.
Nicole Kidman in ‘Flirting’
Nicole Kidman played Nicola in the 1991 romantic coming of age film “Flirting.” Her character was a 16-year-old student at an all-girls boarding school. But what some audience members didn’t realize was that at the time, Kidman was actually 24.
Rose McIver in ‘The Lovely Bones’
Rose McIver, who’s best known for her role in the hit series “iZombie,” played Lindsay Salmon, the main character’s kid sister in the 2009 drama film “The Lovely Bones.” But while she played a 13-year-old in the film, she was in fact 21.
Jennifer Grey in ‘Dirty Dancing’
Jennifer Grey played 17-year-old Frances Houseman, aka Baby, in the 1987 film “Dirty Dancing.” And indeed, she was a great actress worthy of a Golden Globe nomination because she fooled everyone. She was in fact 27.
Joe Keery in ‘Stranger Things’
Joe Keery is best known for his role as Steve Harrington, a 17-year-old high school student, on the Netflix series “Stranger Things.” He had, however, turned 24 when he took on the role for the first time. But he had such a baby face that he was able to pull off the teenage look.
Kristen Connolly in ‘The Cabin in the Woods’
Kristen Connolly played 18-year-old Dana Polk in the 2011 thriller “The Cabin in the Woods.” She was 31 at the time. But she wasn’t the only one pulling the wool over people’s eyes. Her co-star, Chris Hemsworth, also played a young Curt Vaughan despite being 28.
Denise Richards in ‘Wild Things’
Denise Richards had to do a lot of explicit things in the 1998 thriller “Wild Things.” But while her character Kelly was 17, the film’s directors needed to hire someone who was legally of age to pull those scenes off. Fortunately, Richards was 27 at the time.
Linda Hamilton in ‘The Terminator’
Linda Hamilton’s character, Sarah Connor, was a 19-year-old waitress and student in the 1984 film “The Terminator.” But the actress herself was 28. And yet she managed to pull off the whole mortified teenager bit perfectly.
John Franklin in ‘Children of the Corn’
John Franklin played Isaac Chroner in the 1984 horror classic “Children of the Corn.” Isaac was a 12-year-old prophet for the forces of evil. But the actor himself was actually 25. The reason he looked so young was the result of a growth hormone deficiency.
Rachel McAdams in ‘Mean Girls’
Rachel McAdams became famous for her catty role of 16-year-old Regina George in the 2004 teen comedy “Mean Girls.” But McAdams was 26 at the time of filming. And yet she was surprisingly convincing as a teen despite being a decade older than her character.
Paul Wesley in ‘The Vampire Diaries’
Paul Wesley’s character, Stefan Salvatore, was a vampire who was frozen in time at the age of 17. But Wesley was 26 during the series premiere of “The Vampire Diaries.” And while vampires don’t age, Wesley was 35 by the time the show ended. But he still looked as young as the first day he came on set.
Leonardo DiCaprio in ‘Catch Me If You Can’
Leonardo DiCaprio played 17-year-old Frank Abagnale Jr. in the 2002 crime drama “Catch Me If You Can.” His character was based on the real like Abagnale Jr., who was a conman. But DiCaprio conned audiences by fooling them into thinking he was 17 when he was in fact 28 when the movie was filmed.
Paraminder Nagra in ‘Bend It Like Beckham’
Paraminder Nagra played Jess in the 2002 sport romance film “Bend It Like Beckham.” But although her character was 18, Nagra was actually 27. But casting directors saw her seemingly ageless face and knew right away that she could play a convincing teen.
Nicholas Brendon in ‘Buffy the Vampire Slayer’
Nicholas Brendon played the geeky but always faithful Xander Harris on “Buffy the Vampire Slayer.” He had a young face but sometimes sported a lot of facial hair for a 16-year-old. That’s probably because Brendon was actually 26.
David Yost in ‘Mighty Morphin Power Rangers’
David Yost played Billy the Blue Ranger on “Mighty Morphin Power Rangers.” At the time, he was playing a teenager, but he was actually 23 during the filming of season one and 24 by the time the show premiered.
Charisma Carpenter in ‘Buffy the Vampire Slayer’
Charisma Carpenter’s claim to fame was her role as Cordelia Chase, a sophomore at Sunnydale High on the WB series “Buffy the Vampire Slayer.” But while Cordelia was a teenager, Carpenter was actually 26 when the show started production.
Barbra Streisand in ‘Yentl’
Barbra Streisand has a killer voice but she is also an amazing actress. In fact, she was able to pull off something most actors can’t. Back in 1983, when she was 41, she played a 20-year-old Jewish girl in the musical romantic film “Yentl.”
Ross Butler in ‘13 Reasons Why’
Ross Butler was 27 when he took on the role of 17-year-old Zach on the drama series “13 Reasons Why.” But obviously, he wasn’t the only actor on the series that was older than their characters. All of the show’s actors were already well past high school age.
Bianca Lawson in ‘Pretty Little Liars’
Bianca Lawson played 17-year-old Maya St. Germain in the series “Pretty Little Liars.” That was by no means as easy as it sounds given that Lawson was in fact 31 at the time. And she has earned a reputation in Hollywood for playing a high schooler in various roles since her first appearance as a student on "Saved by the Bell." She has played 17-year-old characters for over 17 years!
Chase Stokes in ‘Outer Banks’
Chase Stokes played John B, a teenager who investigated why his father went missing in the Netflix series “Outer Banks.” Although John B is of high school age, Stokes was actually 27. Fortunately, there was way too much mystery in the series for anyone to notice the age gap.
Milo Ventimiglia in ‘Gilmore Girls’
Milo Ventimiglia’s boyish good looks and charm were able to trick audiences into thinking that he was a teenager in the WB drama series “Gilmore Girls,” but the actor was actually 24 when he landed the role during the second season of the show.
Cory Monteith in ‘Glee’
Cory Monteith made jaws drop as the handsome Finn Hudson, a high school quarterback with a gifted musical voice in the series "Glee." But while the character was only a 17-year-old teen, the actor was 27 when the show premiered. Sadly, Monteith lost his life by the time he was 31.
Paul Walker in “Varsity Blues”
Paul Walker starred in the 1999 film “Varsity Blues,” which focused on a high school football team during a tough season. The film has become an ageless classic. That’s ironic given that Walker was 26 at the time of filming and he looked like he hadn’t aged a bit since he was a teenager.
Henry Winkler in ‘Happy Days’
Henry Winkler played Arthur Fonzarelli, aka The Fonz or Fonzie on the 1970s sitcom “Happy Days.” And he did a remarkable job playing a handsome teenage rebel with a leather jacket. But Winkler was no teenager himself. He was well in his 30s when he took on the popular role of the cool greaser.
Emilia Clarke in ‘Game of Thrones’
Emilia Clarke’s character Daenerys Targaryen on “Game of Thrones” was actually 15 in the “Song of Ice and Fire” novels. Although Daenerys’ age was not mentioned in the series, the actress herself was really 25 at the time, which is definitely okay in our book, given all the no-holds-barred scenes that were featured on the show.
Darren Barnet in ‘Never Have I Ever’
Darren Barnet plays a high school junior named Paxton Hall-Yoshida in the Netflix series “Never Have I Ever.” But the actor is 29, which should be obvious given that he has the musculature of a grown man and the bone structure of a full-fledged adult. I mean, did they really think they could pass off an almost 30-year-old man as a teenager?