The Snake River is 91.0 miles (146.5 km) long and with its tributaries drains a 1,324-square-mile (3,430 km2) area. It flows for its entire length on the old lake bed of glacial Lake Agassiz, mostly in western Marshall County but also through a small portion of northwestern Polk County. After initially flowing southwestwardly from its headwaters, the Snake turns westward and collects a short tributary, the South Branch Snake River, and passes the towns of Warren and Alvarado. Downstream of Alvarado, the Snake turns north-northwestward, paralleling the Red River in the Red River Valley. Much of the river's course through the valley has been straightened and channelized. It collects the Middle River upstream of its confluence with the Red in Fork Township.