The Chehalis River begins at the confluence of the West Fork Chehalis River and East Fork Chehalis River, in southwestern Lewis County. From there the Chehalis flows north and east, collecting tributary streams that drain the Willapa Hills and other low mountains of southwestern Washington. The South Fork Chehalis River joins the main river a few miles west of the city of Chehalis. The Newaukum River joins the Chehalis River at Chehalis, after which the river turns north, flowing by the city of Centralia, where the Skookumchuck River joins. After Centralia, the Chehalis River flows north and west, collecting tributaries such as the Black River, which drains the Black Hills to the north, the Satsop River and Wynoochee River, which drain the southern part of the Olympic Mountains.
The Wynoochee River joins the Chehalis near Montesano, after which the Chehalis River becomes increasingly affected by tides and widens into Grays Harbor estuary. The city of Aberdeen lies at the mouth of the Chehalis River. Just east of Aberdeen, the Wishkah River joins the Chehalis, and just west, between Aberdeen and Hoquiam, the Hoquiam River joins. At this point the river has become Grays Harbor. Before the estuary of Grays Harbor empties into the Pacific Ocean, the Humptulips River joins.