It's not uncommon for teenagers in movies and TV to be portrayed by adult actors. Rachel McAdams was 25 when she played 16-year-old Regina George in Mean Girls, Ben McKenzie was 24 playing a sophomore in high school on The O.C., and Andrew Garfield was 28 when he played 17-year-old Peter Parker in The Amazing Spider-Man. Similarly, the cast of 13 Reasons Why season 3 are mostly in their 20s, with a couple of the actors in their 30s. In fact, the youngest of the bunch are 21-year-olds Devin Druid, who plays Tyler Down, and Bryce Cass, who plays Cyrus.
Part of the reason why these actors are so much older than their characters may come from the fact that the series was not originally intended to last beyond season 1. It's based on the book of the same name, and the first season covered the entirety of the source material. Producers also finalized the 13 Reasons Why cast in 2016, when some of these actors were actually still teenagers. It's just that the show lasted more seasons than anyone initially predicted, while the actual storyline didn't advance forward in time.
Season 3 takes place between two school years. Part of the series takes place in April, following the events of the 13 Reasons Why season 2 finale when most of the characters were juniors. Part of the show also picks back up in November when the characters are seniors. So, while all of them should be in the 16-18 range, the actors are significantly older. Here's how the cast stacks up age-wise to the characters they play.