Город расположен между озёрами Сикачи и Большое Яровое, которое является самой низкой точкой Алтайского края, в северо-западной части Алтайского края, в центре Кулундинской степи, в 394 км от Барнаула (по железной дороге), в 20 км от границы с Казахстаном.