Родился в деревне Беляниха, ныне городского округа Перевозский Нижегородской области, в крестьянской семье. После службы в Красной Армии работал в органах ОГПУ (НКВД) города Смоленска. С 1939 года – начальник Мещовского районного отдела НКВД Калужской области. С началом Великой Отечественной войны, сержант государственной безопасности Карпов, руководил в Мещовском районе отрядом самообороны. После оккупации района немецко-фашистскими войсками переведён на службу в Хасанский район Приморского края. В Красной Армии – с апреле 1943 года. Участник Великой Отечественной войны с декабря 1943 года. Командир пулемётного расчёта 4-го эскадрона 60-го гвардейского кавалерийского полка 16-й гвардейской кавалерийской дивизии 7-го гвардейского кавалерийского корпуса 1-го Белорусского фронта гвардии старший сержант Карпов отличился в боях в районе польского города Хощно. 15-16 февраля 1945 года участвовал в отражении ряда контратак противника, пытавшегося прорваться к окружённой группировке. Звание Героя Советского Союза присвоено 31 мая 1945 года. После окончания войны служил начальником отделения милиции в ряде районов Калужской области. С 1954 года майор милиции Карпов – в отставке. Проживал в городе Мещовске Калужской области, а затем в городе Горьком. Похоронен на Старо-Автозаводском кладбище. Награды: ордена Ленина (31.05.1945), Красного Знамени (?), Отечественной войны 2-й степени (15.02.1945), Красной Звезды (30.12.1956), медали, в т. ч. «За отвагу» (10.06.1944). Память: на доме, где жил Герой (г. Нижний Новгород, Автозаводский район, проспект Кирова, 33а), установлена мемориальная доска. На воинском мемориале в городе Перевозе Нижегородской области (улица Советская) расположена памятная стела с именами героев-земляков, среди которых есть мемориальная доска Карпову.