The river has its headwaters situated below Rocky Mountain in the Caroline Ranges and flows eastward across the Gardner Plateau and discharges into the Indian Ocean via Walcott Inlet.
There are seven tributaries of the Charnley River: Pearson River, Maurice Creek, Synnot Creek, Kalumba Creek, Bayonet Creek, Maudie Creek and Kaangulman Creek.
Frank Hann named the Charnley river in 1898 after the pastoralist and miner Walter Chearnley from Nullagine, whose name was misspelled when Hann recorded the name in his diary.