Illinois 31 is a route that starts in northeastern McHenry County, runs south into Kane County, where it begins to follow along the west side of the Fox River to end at Oswego. (IL25 follows the east side of the Fox River.)
Intersections from north to south:
IL31 begins at US12
IL31 joins IL120 west for a short while in McHenry
IL31 leaves IL120 to go south again
IL176 at Crystal Lake
US14 at Crystal Lake
IL62 at Algonquin
IL72 at West Dundee
US20 at Elgin
IL64 at St. Charles
IL38 in Geneva
IL56 joins from the east at North Aurora (Photo from the south facing north)
IL56 leaves west on a connector to I-88 Sign on IL31 northbound
US30 at Montgomery
IL31 ends at US34 in Oswego.
It passes through these towns: McHenry, Crystal Lake, Algonquin, West Dundee, Elgin, South Elgin, St. Charles, Geneva, Batavia, North Aurora, Aurora, Montgomery, Oswego.