The river rises in Coles County near Mattoon and flows generally southwardly through Shelby, Effingham, Clay, Richland, Wayne, Edwards and White counties, past the towns of Louisville, Golden Gate, Carmi and New Haven. It enters the Wabash River on the common boundary of White and Gallatin counties, about 4 miles (6 km) southeast of New Haven.
The drainage area of this watershed covers 80 square miles.