Город расположен на реке Шошме недалеко от места её впадения в Вятку, в 294 км от Кирова. Также по территории города протекают реки Засора и Мокша, которые впадают в Шошму.