The headwater tributaries of the Frankstown Branch rise on the slopes of the Allegheny Front south of Altoona. The Frankstown Branch forms at the village of Claysburg by the confluence of Beaverdam Creek and South Poplar Run, then flows north along the western base of Dunning Mountain. Passing just east of Hollidaysburg, the river turns east briefly before heading northeast along the western base of Lock Mountain. Turning southeast, the river breaks through the mountain in a water gap and passes Williamsburg, then turns north again, now against the western base of Tussey Mountain. Again the river turns east to break through a water gap, then passes the borough of Alexandria before joining the Little Juniata River to form the main stem of the Juniata River.