The 25-year-old former Aldershot man has made 108 appearances for the club and scored 10 times.
"I'm delighted to extend my contract at Stevenage," he told the club's official website.
"The club has given me a great platform to perform on over the past three years and I look forward to playing a big part in the season ahead."
Charles made 41 appearances last season, scoring once.
- Sports & Recreation