Salmo is in the West Kootenay region of southeastern British Columbia. The village municipality is mostly on the north side of Erie Creek at the confluence with the Salmo River. The place lies largely east of the junction of BC Highway 3 (about 42 kilometres (26 mi) southeast of Castlegar), and BC Highway 6 (about 41 kilometres (25 mi) south of Nelson, and 25 kilometres (16 mi) north of the US border).