According to the United States Census Bureau, the town has a total area of , of which is land and , or 5.51%, is water.
Hardwick lies along the western edge of Worcester County, bordered by Hampshire County to the southwest.