According to the United States Census Bureau, the town has a total area of , of which is land and , or 2.54%, is water [REF].
Moravia is at the south end of Owasco Lake, and the Owasco Inlet flows northward through the town to the lake.