Город расположен на востоке Козельского района, в пределах Средне-Русской возвышенности, являющейся частью Восточно-Европейской равнины, на высоте 220 м над уровнем моря. Рельеф местности равнинный. Со всех сторон город окружён лесами. В границах города берут начало ручьи, впадающие в реку Песочная (приток Жиздры).
По автомобильной дороге расстояние до административного центра Калужской области города Калуга составляет 81 км, до районного центра города Козельск — 13 км, до ближайшей железнодорожной станции Шепелево — 5 км.