Розташований на східній околиці Приобського плато, на лівому березі річки Алей (ліва притока Обі) при впадінні річки Горьовки, в 125 км на північний захід від Барнаула на федеральній автомагістралі А322 Барнаул — Рубцовськ — кордон з Республікою Казахстан. Через місто проходить Турксіб.