The river begins just south of the community of Dublin in West Perth, Perth County at the confluence of the Cooke Drain and the Liffey Ditch. The river flows immediately west under Perth County Road 180 and takes in the left tributary McGrath Drain. It continues west northwest taking the left tributary Tyndall Drain and then the right tributary Silver Creek at the community of Egmondville, today part of the community of Seaforth in the municipality of Huron East, Huron County. It continues west northwest and takes in the left tributary Broadfoot Drain, and right tributaries Carnochan Drain and Helgrammite Creek before passing under Ontario Highway 4 between the community Clinton in Central Huron to the north and the community of Vanastra in Huron East, to the south. The river then turns southwest and takes in the right tributary Tricks Creek, heads south and takes in the left tributaries Wiltse Creek and Bannockburn River, and then turns sharply west just north of the community of Varna in Bluewater. It takes in the right tributaries Middletons Creek and Brandt Creek before passing under Ontario Highway 21 and reaching its mouth at Lake Huron in Bayfield.