PA 104 begins at an intersection with US 11/US 15 in Liverpool Township, Perry County, with a park and ride lot located southwest of the intersection. From here, the route heads north on a two-lane undivided road between woods to the west and farm fields to the east. A short distance after beginning, the road crosses into Susquehanna Township in Juniata County and heads into agricultural areas with some homes, curving to the northwest. Upon crossing the Mahantango Creek, PA 104 enters Chapman Township in Snyder County and heads north through wooded areas with some farm fields and residences, running a short distance east of the North Branch Mahantango Creek. After passing through Meiserville, the road heads into Perry Township and continues through a mix of farmland and woodland with some homes. The route passes near Aline and Shadle before coming to an intersection with PA 35. After this, PA 104 passes through agricultural areas with some residences before heading into forested areas and crossing into Washington Township and passing to the east of Shade Mountain. As the road passes by the mountain ridge, it turns to the northwest and heads into Franklin Township. The route becomes South Wausau Road and passes near farms with some homes before heading into the borough of Middleburg. At this point, PA 104 turns north and passes homes and businesses, reaching an intersection with US 522. Here, PA 104 turns northwest to form a concurrency with US 522 on East Main Street, crossing Middle Creek. The road turns north and becomes South Main Street, passing more residential and business establishments. In the commercial center of town, US 522 splits to the west and PA 104 continues north on North Main Street, passing more development. The route crosses back into Franklin Township and becomes an unnamed road, turning northwest into farmland with some homes. The road heads north through wooded areas, crossing into Center Township and heading into a mix of farmland and woodland with occasional residences. PA 104 runs through open farmland before coming into the residential community of Penns Creek, turning northeast and becoming Centerville Street. After leaving Penns Creek, the road passes near more farms. At the crossing of the Penns Creek, PA 104 continues into Limestone Township in Union County and heads north, running through more farmland with some woods and homes. The route heads into areas of woods before continuing into open agricultural areas with a few residences. PA 104 heads into the borough of Mifflinburg and becomes South 10th Street, passing homes before ending at PA 45.