The 27-year-old was already contracted until the end of 2016, however, chose to add another two years to his deal at St Kilda.
“In my time at the Saints, I have seen the club rise to the top and now work its way up from the bottom,” Geary said.
“There is an exciting future ahead for the Saints and I couldn’t be happier to commit to being a part of that future.”
Geary has played 120 games with the Saints since being selected with pick No. 58 in the 2007 Rookie Draft.