PA 304 begins at an intersection with
PA 45 in the borough of
Mifflinburg in
Union County, heading southeast on two-lane undivided South 4th Street. The road heads through residential areas before crossing into
Limestone Township. In this area, the route heads south into open agricultural areas with a few homes, becoming an unnamed road. PA 304 curves southeast and reaches the residential community of Dice, continuing through a mix of farmland and woodland with a few residences. The road turns northeast through more open agricultural lands until it crosses into the borough of
New Berlin. At this point, the name of the route passes several homes, coming to an intersection with the northern terminus of
PA 204. After passing through more of the town, PA 304 heads back into agricultural areas with some residences and becomes County Line Road as it runs to the north of
Penns Creek. The route then becomes the border between
Union Township, Union County to the north and
Jackson Township,
Snyder County to the south, with the creek turning south away from the road. PA 304 splits from County Line Road and fully enters Union Township as it passes through more rural areas on an unnamed road, running through Dry Valley Cross Roads. The road continues northeast through more farmland with occasional residences before coming to the community of
Winfield. Here, PA 304 turns north and passes homes prior to ending at
US 15. ==Major intersections==