西汉置宁县,治今万全县,属上谷郡。
北魏太和中改置小宁县,属广宁郡。
北齐废小宁县,为怀戎县地,属永丰郡。
唐龙纪元年(889),置文德县,属武州。
金大定二十九年(1189),改文德县为宣德县,属宣德州。
元代属中书省上都路,为顺宁府宣德县宣平县地。
明洪武四年(1371),废宣德、宣平二县,二十六年,废宣平县置万全右卫,于此(德胜堡)建万全右卫城,属万全都指挥使司。
清康熙三十二年(1693),改万全右卫为万全县,治万全城,属直隶省宣化府。
1912年,属直隶省口北道。
1928年,属察哈尔省。
1941年,并入万安县。
1945年,复设万全县。
1952年,划归河北省张家口专区。
1958年,并入怀安县。
1962年,复设万全县,属张家口专区。
1967年,属张家口地区。
1983年,县人民政府迁今址。
1993年,划归张家口市。
2024年1月,经国务院批准撤销万全县,设立万全区。