Highway 95 starts at the Canada-United States border in Kingsgate, where it continues as US Route 95. It goes north along the Moyie River to the town of Yahk, where it merges onto Highway 3. The two highways then travel together northeast to Cranbrook, where Highway 95A begins. Highways 95 and 3 go east to the Fort Steele, where Highway 3 diverges east, and Highway 93 merges onto Highway 95.
From the junction, Highways 95 and 93 go north through Wasa to another junction with Highway 95A. The two highways then travel north along the Kootenay River through Skookumchuk to Canal Flats at the base of Columbia Lake. The two highways then continue north along the Columbia River through Fairmont Hot Springs, Windermere and Invermere to Radium Hot Springs, where Highway 93 diverges east. Highway 95 then goes north through Edgewater, Brisco, Spillimacheen, Harrogate, Castledale, and Parson to Golden, where it ends at a junction with Highway 1.