The Royals announced the extension Monday but did not disclose financial details.
The deal buys out two potential free-agent years for the 29-year-old and starts this season. The contract has escalators and bonuses that could max it out at $49 million over the five years.
Dozier missed the start of the season last year after testing positive for COVID-19. He made his season debut on Aug. 9. In 44 games, Dozier posted a .228/.344/.392 slash line with six home runs and 12 RBIs.
He had a breakthrough 2019 season in which he hit 26 homers, tied for the American League lead in triples (10) and had 84 RBIs.
Dozier is a clear part of a Royals team that's looking to make noise in a suddenly ascendant AL Central. Earlier this offseason, Kansas City acquired outfielder Andrew Benintendi in a trade with the Boston Red Sox, and signed veteran first baseman Carlos Santana to a two-year deal.