The main stem of the river rises at the outlet of Nulhegan Pond in the eastern part of the town of Brighton, Vermont, and flows east into the town of Ferdinand. Near the eastern border of Ferdinand, the North Branch of the Nulhegan enters from the north. The main stem continues east into the northern corner of the town of Brunswick, then turns southeast upon entering the town of Bloomfield for its final descent to the Connecticut River at Bloomfield village, across from the village of North Stratford, New Hampshire. The East Branch of the Nulhegan enters from the north 2 miles (3 km) northwest of Bloomfield village.
The North Branch of the Nulhegan rises at the mouth of Unknown Pond in the unincorporated area of Averys Gore, Vermont, at an elevation of 2,326 feet (709 m) in a saddle between Middle Mountain to the north and Bluff Mountain to the south. The North Branch flows southeast through the west part of Lewis and the eastern corner of Brighton before entering the main Nulhegan River in the east part of the town of Ferdinand, just east of the location known as Wenlock. The total length of the North Branch is 14.4 miles (23.2 km).
The East Branch rises in the center of the town of Averill and flows briefly north and west before turning south and southeast for the majority of its course. It passes through the eastern corner of the town of Lewis, then enters the town of Bloomfield, where it joins the main stem 2.3 miles (3.7 km) upstream from the Connecticut River. The total length of the East Branch is 16.5 miles (26.6 km).