Werner, who turned 18 on Thursday, has risen through the ranks at Stuttgart, the club he has represented since the age of seven.
"Stuttgart have been my club since I was very small," Werner said on the Bundesliga club's official website. "That's why I'm delighted with this contract. I've come through all the youth ranks and feel really happy here.
"I would like to learn even more and I'm pleased that I can do that with my club."
Werner has scored four goals in 21 Bundesliga appearances and even became the youngest scorer in the club's 120-year history last November.