 The Shell Rock River flows from Albert Lea Lake in Freeborn County, Minnesota, and soon enters Iowa, flowing generally south-southeastwardly through eastern Worth, northeastern Cerro Gordo, western Floyd, northeastern Butler, southwestern Bremer and northwestern Black Hawk counties, past the town of Glenville in Minnesota and the towns of Northwood, Plymouth, Rock Falls, Nora Springs, Rockford, Marble Rock, Greene, Clarksville and Shell Rock in Iowa.It joins the West Fork of the Cedar River in Black Hawk County, about north-northwest of Cedar Falls.At Rockford, Iowa, it collects the Winnebago River from the west.