The English River flows for much of its course as two streams:
The North English River is the longer of the two forks. It rises just south of Grinnell in western Poweshiek County and flows generally east-southeastwardly through Iowa County, past the town of Guernsey. In Iowa County it collects two minor tributaries, the Deep River and the Middle English River, both of which rise in Poweshiek County and flow eastwardly for short distances.
The South English River rises just south of Montezuma in southern Poweshiek County and flows generally eastwardly through extreme northeastern Mahaska County and northern Keokuk County.
The north and south forks join in extreme northwestern Washington County; The English River then flows generally eastwardly for about 35 mi (56 km), past the town of Riverside. It joins the Iowa River in northeastern Washington County, 12 mi (19 km) south of Iowa City.