With its headwaters forming at an elevation of on the Atherton Tableland, part of the Great Dividing Range west of Herberton and north of Ravenshoe, the Herbert River is formed by the confluence of the Millstream and the Wild River. The Herbert River flows in a generally southeastern direction through the Lumholtz National Park joined by fifteen tributaries including the Stone River and flowing past the town of Ingham. The Herbert River reaches its mouth where it enters the Coral Sea near Lucinda, at the southern end of the Hinchinbrook Channel, north of Townsville. The river descends over its course.