MacKinnon, 20, was third on the Avalanche in scoring last season with 52 points (21 goals, 31 assists) in 72 games
"Signing Nathan to a long-term contract was a priority this offseason," Avalanche general manager Joe Sakic said. "He is going to be a key part of our team for many years to come and it was important to secure his rights moving forward."
MacKinnon was a restricted free agent.
The No. 1 pick at the 2013 NHL Draft, MacKinnon won the Calder Trophy the following year as the NHL's top rookie. At 18 years, 224 days, he was the youngest player to win the award and was named to the NHL All-Rookie Team. MacKinnon had 63 points (24 goals, 39 assists) in 82 games during the 2013-14 regular season and 10 points (two goals, eight assists) in seven Stanley Cup Playoff games.
MacKinnon has 153 points (59 goals, 94 assists) in 218 NHL games.