The Cannon River flows from Shields Lake near Faribault, Minnesota to Red Wing in the U.S. state of Minnesota, where it joins the Mississippi River. It drains a watershed approximately 1460 square miles (3,780 km²) in size.
The Cannon River has few rapids, but some can be difficult (Class II). Some have claimed lives, as has the confluence with the Little Cannon River in Cannon Falls. Canoes traversing the river must portage several dams; the low header dams are more dangerous than they appear to novices. Downed trees and logjams are extreme hazards in high water, as are low bridges. The river varies in width from 50 to 200 feet (15 to 60 m).