It passes through Greenville, Wilton, Lyndeborough, Greenfield, Bennington, Antrim, Hillsborough, Windsor, and Washington, reaching its northern terminus of Goshen at New Hampshire Route 10.
Known locally as Greenville Road over this stretch, it merges with NH 101 to follow Gibbons Highway, crosses the Souhegan again as it enters Wilton Village, leaves NH 101 and turns north on Island Street to cross both the Souhegan and Stony Brook, then turns northwest along Forest Road at an intersection with Main Street.
Winding through several streets of the main village of Bennington, including Main Street, Francestown Road, and Old Hancock Road, it meets the western terminus of NH 47 and passes by dam at the north end of Powder Mill Pond reservoir near the Great Falls of the Contoocook River, and then merges with US 202.
Changing names to Clinton Road, NH 31 follows the Great Brook northwest, and then turns due north to the village of Antrim Center.
Heading first northwest, then west, along Second New Hampshire Turnpike, the route leaves Hillsborough, crosses the northern tip of the town of Windsor, it next enters Washington.