The 29-year-old forward spent three years at Norwich City, but has decided to move on following the expiration of his contract.
Hibernian were also thought to be in the running for the Northern Ireland international, but he has opted to move to Tynecastle Stadium.
"I'm delighted. It's been a frustrating three or four days to be honest, whether we were going to get it over the line or not but finally we have and I'm absolutely delighted to be back in Scotland to play my football and most importantly to play for a massive team like Hearts," Lafferty told HeartsTV.
"I just wanted to come to somewhere where I can play football. I've got an important year ahead of me. I'm hoping to make the World Cup with Northern Ireland, so it's an important year and I've been told I'll be a main focal point of the team, which over the past two or three years I've thrived on and I've produced the goods.
"Coming here, knowing how passionate the fans are about their club and their football, it's important that I was coming to a place where I know I'd get along with the supporters."
Lafferty is already familiar with Scottish football having spent four years between 2008 and 2012 playing for Rangers.