The deal is for $3.55 million, according to multiple reports. His agreement with the Mets was first reported by MLB Network.
Villar, a switch-hitter, had a .232 batting average with 15 RBIs and 16 stolen bases in 52 games between the Marlins and Blue Jays during the pandemic-shortened 2020 season. He has shown his versatility in the field, playing second base, shortstop, third base and outfield during his career.
Entering his ninth MLB season, the 29-year-old Villar has also played for the Orioles, Brewers and Astros since 2013. He has a career .259 batting average with 80 home runs, 283 RBIs and 218 stolen bases.
The Associated Press contributed to this report.