Johnson is in the center of Lamoille County, in the valley of the Lamoille River, with the Green Mountains rising to the north and the south of the river. The village of Johnson is in the center of the town, where the Gihon River joins the Lamoille from the northeast. Vermont Route 15 crosses the center of the town, following the Lamoille River; the highway leads southeast 5 miles (8 km) to Hyde Park, the Lamoille County shire town, and west 9 miles (14 km) to Jeffersonville in the town of Cambridge. Vermont Route 100C leads northeast from Johnson village 4.5 miles (7.2 km) to Vermont Route 100 in North Hyde Park.