Route 129 begins at Route 110 in Chelmsford Center, where the northbound lanes of Route 4 leave Route 110. The route passes out of the town center to the east before intersecting U.S. Route 3 at Exit 29. It passes into Billerica, and shortly thereafter has a concurrency with Route 3A for just over a mile, following southbound on that route and crossing the Concord River. The route then turns eastward once more, heading over the Shawsheen River into Wilmington. In Wilmington, Route 129 becomes concurrent with Route 38, crossing Route 62 and passing the Wilmington MBTA station in the process. The two routes split south of the intersection, with Route 129 heading more southeasterly towards its intersection with Interstate 93 at Exit 38.
After crossing I-93, Route 129 heads into Reading. The route crosses Route 28 just north of the town center before continuing eastward. At the town line with Wakefield, the route enters a rotary intersection with I-95/Route 128 at Exit 40, most of which is in the town of Wakefield. Shortly after leaving the rotary, and just after crossing the Saugus River, Route 129 turns southward along Main Street, following the eastern side of Lake Quannapowitt towards the town center. At Water Street, Route 129 turns eastward, passing the Center Depot, which is on the National Register of Historic Places and along the Haverhill Line (though currently without a stop). From Wakefield, Route 129 enters Saugus and Essex County. Passing the Breakheart Reservation, the route joins U.S. Route 1 at a cloverleaf intersection, following the route concurrently northward into Lynnfield.
In Lynnfield, Route 129 leaves Route 1 at the Lynnfield Tunnel, a traffic landmark just south of I-95 and Route 128. Just east of this point, Route 129 enters Goodwin Circle, which provides access to all three highways via a connector road. Immediately after leaving the circle, Route 129 enters the city of Lynn. In Lynn the route heads southeastward, above the Lynn Woods Reservation, twisting around Sluice Pond before meeting Route 129A next to Flax Pond. At this intersection, Route 129 turns southwest along Boston Street before turning southeast on Washington Street, where it crosses Route 107. After passing east of Lynn Common, the route splits, with the eastbound side staying on Washington Street and the westbound following Central Avenue and Exchange Street. Both directions meet again on Route 1A, staying concurrent with that route until meeting the eastern end of Route 129A, turning south before turning eastward once more an entering Swampscott.
In Swampscott, Route 129 follows along King's Beach, above Black Will's Cliff and then along Fisherman's Beach before turning more inland, bypassing the Phillips Point neighborhood before coming close to the ocean once again in the Beach Bluff neighborhood as it enters Marblehead. Once in Marblehead, Route 129 continues along Atlantic Avenue before finally terminating at th corner of Atlantic and Ocean, where it meets the eastern end of Route 114. Atlantic Avenue continues into downtown Marblehead from this point, while Ocean Avenue heads across a short isthmus onto Marblehead Neck.
Route 129 (which was likely formed sometime in the 1920s) was originally a shorter route that only existed between Wilmington and Lynn, expanding to Marblehead by 1933 and to Chelmsford sometime in the late 1930s.
Prior to the construction of the Yankee Division Highway, Route 128 shared a short concurrency with Route 129 in Wakefield, joining the route at the intersection of Water Street and Main Street and leaving at the junction of Vernon Street and Water Street.
In 1996, Route 129 had a realignment in Lynn, with the old route re-designated as Route 129A. This was done to bring the route through downtown.
Route 129A is an east–west Massachusetts state route that serves as an alternate to Route 129, located entirely in Lynn, Massachusetts. The route was created in 1996, taking over the old routing of Route 129 in Lynn after it was realigned to enter downtown.
The route starts where Route 129 leaves its old routing when it enters Lynn, heading southeast. It soon enters into a concurrency with Route 107 and goes northeast, but returns to going southeast when the concurrency ends. Route 129A ends at the end of a concurrency between Routes 1A and 129, when 129 returns to its older route.