It goes north for 5 miles (8.0 km) to Rolfe, then begins to go northeast in a stairstep manner for 9 miles (14 km) until crossing the West Fork of the Des Moines River and into Humboldt County 3 miles (4.8 km) west of Ottosen.
It then turns north onto the Palo Alto County/Kossuth County border for 4+1⁄2 miles (7.2 km) and passes through West Bend.
Near Ringsted, it turns north again for 6+1⁄2 miles (10.5 km) and meets Iowa Highway 9 in Armstrong.
Highway 15 leaves Armstrong to the east; 3 miles (4.8 km) east of town, it turns north and ends at the Minnesota border 7 miles (11 km) later.
Parts of what is now Iowa Highway 15 were originally primary roads designated in 1926.