春秋戰(zhàn)國時為代地。
秦置班區(qū)縣,屬代郡。
西漢置班氏縣,新莽改為班副縣,東漢復(fù)為班區(qū)縣,東漢末年縣廢,北魏時為畿內(nèi)之地,隋屬馬邑郡云內(nèi)縣、唐為云中縣地,五代因之。
遼代始置懷仁縣。
因耶律阿保機與李克用會于云州東城,易袍馬約為兄弟,有懷想仁人之語,又與《論語》“懷德仁里”語符之,故取名懷仁。
屬西京道大同府。
金貞祐二年(1214)五月升為云州,屬西京路大同府。
明清均為懷仁縣,屬大同府。
抗日戰(zhàn)爭和解放戰(zhàn)爭期間,中國共產(chǎn)黨先后建立分屬晉察冀、晉綏邊區(qū)管轄的東、西懷仁縣民主政府。
1948年5月26日,懷仁全境解放,屬晉綏邊區(qū)專署。
新中國成立后,屬察哈爾省雁北專署。
1952年12月歸山西省雁北專區(qū)。
1954年7月,大同縣、懷仁縣合并為大仁縣。
1958年9月,大仁縣撤銷,劃歸大同市,稱大同市郊區(qū)。
1960年1月,置懷仁區(qū),歸大同市管轄。
1964年12月,恢復(fù)懷仁縣建制,歸雁北地區(qū)管轄。
1993年7月10日,劃歸朔州市管轄。
2018年2月,經(jīng)國務(wù)院批準(zhǔn),撤銷懷仁縣,設(shè)立縣級懷仁市,以原懷仁縣的行政區(qū)域為懷仁市的行政區(qū)域。
懷仁市由山西省直轄,朔州市代管。