Расположен в 125 км к западу от Владимира и в 90 км от Москвы на реке Киржач (левый приток Клязьмы). Киржач находится на слабо всхолмлённой долине. С севера, востока и юга окружён лесами. Через город протекают река Киржач и её приток река Вахчилка. В нескольких метрах от устья Вахчилки находится искусственное озеро Крутое площадью 48 га.