Highway 23 begins at Highway 7, east of Elginfield, a community straddling the boundary between the municipalities of Middlesex Centre and Lucan Biddulph. The route travels north through the latter, surrounded on both sides by farmland. At Whalen Corners, the highway curves northeast as it exits Middlesex County, becoming the boundary road between Huron County to the west and Perth County to the east. The highway passes through the communities of Woodham and Kirkton, crossing completely into Perth County just north of the latter. It later enters Russeldale, meeting the eastern terminus of former Highway 83 as it swerves north. Approximately beyond there it enters the town of Mitchell, where it is known as Blanchard Street. The route intersects Highway 8, and becomes concurrent with it briefly to cross the North Thames River before branching back northeast along St. George Street. Midway between Mitchell and the village of Monkton, the highway bisects the community of Bornholm within the municipality of West Perth. Prior to entering Monkton, Highway 23 curves gently towards the southeast; In the middle of the village, drivers must turn at an intersection with Perth County Road 55 to remain on Highway 23. Continuing its northeasterly course, the highway passes through more farmland, now within the town of North Perth, and serves the communities of Newry and Atwood before encountering former Highway 86 on the western edge of Listowel. South of this intersection, the route is known locally as Mitchell Road South. It turns southeast onto Main Street West, where it once travelled concurrently with Highway 86 before turning northeast onto Wallace Avenue North. The final leg of the route passes through the village of Gowanstown. The route gently curves to the east before turning north at an intersection just west of Palmerston, where it crosses the boundary into Wellington County and the Town of Minto. Eight kilometres north of the intersection, Highway 23 encounters the western terminus of former Highway 87, where it turns east then northeast. The route enters Harriston, where it is locally known as Arthur Street. The Highway 23 designation ends at a junction with Highway 9 and Wellington County Road 109, locally known as Elora Street. The road continues beyond the junction as Highway 89.
History
Highway 23 was first established on June 22, 1927, when the Department of Highways assumed the road from Mitchell to Teviotdale through Perth and Wellington counties, via Monkton, Listowel and Palmerston, connecting Highway 8 and Highway 9. As part of depression relief work undertaken by the department during the early 1930s, Highway 23 was extended from Highway 8 to Highway 7 east of Elginfield on July 11, 1934. Highway 23 remained unaltered between 1934 and 1998. On January 1, 1998, the section from the Highway 89 junction west of Palmerston to Highway 9 in Teviotdale was decommissioned, resulting in the northern terminus of Highway 23 becoming the western terminus of Highway 89. During the spring of 2003, the segment of Highway 89 between this junction and Harriston was renumbered as Highway 23, resulting in the current routing.