Dorset is located along the northern border of Bennington County, with Rutland County on the north.
According to the United States Census Bureau, the town has a total area of , of which is land and , or 0.27%, is water.