Iowa 149 begins at U.S. Highway 34 in Ottumwa and ends at Williamsburg at Interstate 80.
It then turns east, and meets Iowa Highway 21 before entering Hedrick.
It then continues east through Martinsburg, then turns north at an intersection with Iowa Highway 78.
Iowa 149 then turns north to go through Williamsburg, then ends at an interchange with Interstate 80.
On July 16, 1997, Iowa 149 took over an old alignment of U.S. Highway 63 between the current U.S. 63 interchange north of Ottumwa and the current Iowa 23 intersection upon the relocation of U.S. 63 between Ottumwa and Oskaloosa.