唐代属文德县。
辽代于今宣平堡置大新镇。
金代于今宣平堡置宣平县,又于今阳门堡置阳门县。
明洪武二十六年(1393年)于今左卫镇置万全左右卫。明永乐二年 (1404年) 移万全右卫治所于德胜口堡城,即今万全城。
清代康熙三十二年 (1693年) 裁改万全右卫置万全县,辖附近西路所属地域及张家口、膳房堡、新开口、新河口、洗马林等。
民国时期,万全县隶属直隶省口北道,县名仍旧。
民国三年(1914年) 县治所移至张家口堡子里。
民国二十六年(1937年)9月,属日伪察南自治政府。
民国二十七年(1938年)1月,日伪万全县公署在张家口成立。
民国二十八年(1939年)9月3日因与日伪蒙疆联合自治政府同治于张家口,万全县治所遂迁回万全城。
民国三十年(1941年)4月1日万全与怀安县合并,称万安县,治所柴沟堡,隶属于蒙疆联合自治政府察南政厅。
1945年8月,建立中共万全县委县政府。
1948年11月,万全县属察哈尔省察南专区。
1958年,同怀安县合并,称怀安县,治所柴沟堡。1961 年底两县分开,恢复万全县置,治所万全城。
1983年7月1日,万全治所由万全城迁到孔家庄。
1993年,万全县划归张家口市管辖。
2016年1月27日,张家口市部分行政区划调整获国务院批复,同意撤销万全县,设立万全区,管辖范围和政府驻地不变。