According to the United States Census Bureau, the town has a total area of 40.3 square miles (104.5 km2), of which 40.2 square miles (104.1 km2) is land and 0.2 square mile (0.4 km2) (0.40%) is water.
The Ainsworth State Park is a 905-acre (3.7 km2) park located in Williamstown which provides camping, hiking, and hunting.