The new contract has an average annual value of $7 million, the highest on the team.
The 21-year-old was among the top tier of restricted free agents this season. Brayden Point's deal with Tampa Bay likely set the market for Tkachuk; Point signed for three years with an AAV of $6.75 million.
Tkachuk tied for second on the Flames last season with 34 goals and added a career-high 43 assists for 77 points, his best output in three NHL seasons. He also has some excellent possession numbers, with a career Corsi percentage of 56.9.
He added three points in five playoff games last season.
The Flames are right against the salary cap after re-signing Tkachuk. They have 10 players on the roster carrying a cap hit above $4 million.