Route 117 begins in the city of Leominster, near the city center, and passes southeast along Lancaster Street before having an interchange with Interstate 190's Exit 7, just over the city line into Lancaster. In Lancaster the route heads eastward, crossing two branches of the Nashua River while having a short, quarter-mile concurrency with Route 70 south of Fort Devens. The route then crosses into Bolton, crossing Route 110 near the Bolton Flats State Wildlife Management Area. It then passes through the center of town before crossing I-495 at Exit 27. It serves as the northern terminus of Route 85 before crossing into Middlesex County and the town of Stow.
In Stow, the route passes through the countryside before meeting Route 62 at the center of town. The two routes head eastward concurrently, entering into Maynard. The routes split just after crossing the Assabet River, with Route 117 heading in a more southeastern direction. The route crosses Route 27 before entering Sudbury. It crosses through the southern tip of Concord and enters the town of Lincoln over the Sudbury River.
In Lincoln, Route 117 passes through the southwest end of town, intersecting Route 126 and the Fitchburg Line south of the Lincoln station before crossing into Weston. In Weston the route bends southeastward through the Silver Hill, Hastings and Kendal Green sections of town before entering Waltham. Serving as the city's Main Street, the route crosses I-95 and its concurrent route Highway 128 without an interchange before ending at U.S. Route 20, which in turn continues Main Street through Waltham's downtown.