The left-handed hitter, who turns 32 in February, had spent his entire major league career with the Minnesota Twins. Kepler played in only 105 games last season while dealing with knee and hip injuries and batted .253 with 21 doubles, eight homers and 42 RBIs. He became a free agent on Oct. 31.
Kepler is projected to be a corner outfielder with the Phillies, who did not tender a contract offer to Austin Hays after the season.
The Twins had signed Kepler, a native of Berlin, Germany, as teenager in 2009. He made his MLB debut at age 22 on Sept. 27, 2015.
He is a career .237 hitter with 161 home runs and 508 RBIs, a .318 on-base percentage, .429 slugging percentage and .746 OPS in 1,072 games. His best season was in 2019, when he batted .252 with career highs in homers (36) and RBIs (90) and a career-best-tying 32 doubles.