NH 10 begins at the Massachusetts state line in Winchester, where it connects to Massachusetts Route 10. It runs northeast into the town center where it intersects with NH 78 and NH 119. NH 119 joins NH 10 briefly before splitting off to the east. NH 10 continues north along the Ashuelot River, through the town of Swanzey and into the city of Keene. NH 10 meets NH 12 and NH 101 at a traffic circle near Keene State College and turns west, joining the latter two routes to their intersection with NH 9. At this intersection, NH 101 ends while NH 10 and NH 12 turn north onto NH 9 eastbound. The three overlapped routes pass west of downtown Keene for just over, then NH 9 and NH 10 exit NH 12 at a trumpet interchange and turn northeast. NH 9 and NH 10 remain overlapped for another before NH 10 splits off to the north and crosses into the town of Gilsum.
NH 10 passes through Gilsum with no major junctions, then enters Marlow, where it has a overlap with NH 123. Continuing north, NH 10 meets the eastern terminus of NH 123A then crosses into Lempster. The highway has no major junctions in Lempster and continues north into Goshen where it intersects the northern terminus of NH 31. NH 10 continues into the town of Newport, where it shares a brief concurrency with NH 11 and NH 103 in the town center. The highway continues through Croydon with no major junctions, then into Grantham where it intersects with the northern terminus of NH 114 before interchanging with Interstate 89. NH 10 joins I-89 at exit 13 and runs along the Interstate highway for, through the southwest corner of the town of Enfield and into Lebanon, where it leaves I-89 at exit 19.
Lebanon to Haverhill
NH 10 exits I-89 onto U.S. Route 4, which it immediately joins westbound. US 4 and NH 10 cross the Mascoma River into the village of West Lebanon, where they intersect with NH 12A. Just over to the north, US 4 splits off to cross the Connecticut River into White River Junction, Vermont. Now running along the eastern bank of the river, NH 10 continues north into the town of Hanover. At Dartmouth College in the heart of town, NH 10 meets its only child route, NH 10A, a connector to I-91 and US 5 in Norwich, Vermont, then intersects the northern terminus of NH 120. NH 10 continues north into the town of Lyme, where the only intersection of note is to East Thetford Road, a connector to Thetford, Vermont, which becomes Vermont Route 113 upon crossing the border to the west. Crossing into Orford, NH 10 intersects and briefly overlaps NH 25A before that route splits off to cross into Fairlee, Vermont, and meet US 5. NH 10 continues into Piermont and intersects with NH 25 and NH 25C. NH 25 turns onto NH 10 northbound, and the two routes are cosigned for into the neighboring town of Haverhill. After crossing the town line, NH 25 splits off to begin its eastward trek across the state. NH 10 continues north along the Connecticut River and intersects the western terminus of NH 116 in the village of North Haverhill. Several miles to the north, NH 10 intersects the southern terminus of NH 135 and enters the village of Woodsville, where it reaches US 302, which crosses into Wells River, Vermont, just to the west. NH 10 officially ends at US 302, but is cosigned with it through Bath, Landaff, Lisbon and into Littleton to its intersection with NH 18, just north of I-93.
History
NH 10 was first designated in 1922 as part of the New England road marking system. The original New England Interstate Route 10 extended from Route 1 in New Haven, Connecticut, to Route 18 in Littleton, New Hampshire. When the U.S. Highway system was introduced in 1926, it supplanted the New England route system and the entirety of existing Route 10 was redesignated as state highways. Around the same time, the newly designated U.S. Route 302 was assigned to the existing route between Haverhill and Littleton, effectively making the northernmost part of NH 10's routing redundant. As a result, NH 10 was eventually truncated back to the junction with US 302 in Haverhill, but for historical reasons it seems the state decided to post NH 10 signage along the former route. NH 10 as signed today retains most of its original 1922 alignment. The one major exception to this is the routing of NH 10 along I-89 between Grantham and Lebanon. Many segments of the former surface alignment are still in use, with several labeled as "Old Route 10."
New Hampshire Route 10A is an east–west highway in Hanover. It is the shortest state highway in New Hampshire, slightly more than in length. The eastern terminus of NH 10A is in the center of Hanover at the junction with NH 10, which is Main Street. The western terminus of NH 10A is on Ledyard Bridge over the Connecticut River, which is the border with Vermont. Across the bridge, the road becomes Vermont Route 10A. In Hanover, NH 10A is locally named West Wheelock Road.