代,本古国名。春秋时属晋,战国时属赵。秦置广武县,西汉广武县属并州太原郡。新莽改信桓,东汉复名广武,改属雁门郡(郡治在今朔州市境)。三国魏为雁门郡治,隶并州。北魏郡隶司州,太和中年改隶肆州,郡、县治徙今城关。北周大象元年(579)肆州治自今忻州市境徙广武县。
隋开皇初年废雁门郡,五年(585)改肆州为代州,县属之。十八年避太子杨广名讳,改广武县为雁门县。大业三年(607)改代州为雁门郡,县属之。唐武德元年(618)改雁门郡为代州,建都督府,州、县俱属之。天宝元年(742)再改代州为雁门郡,仍为都督府。乾元元年(758)废郡,复为代州。
五代周显德元年(954)于县置静塞军,寻废。金天会六年(1128)于县置震武军,隶河东北路,寻废。蒙古中统四年(1263)雁门县废入代州。元隶冀宁路。明洪武二年(1369)废代州,改置代县。八年复为代州,隶太原府。成化二十三年(1487)置雁门道,与州同治。嘉靖中年改雁平道,明末废。
清康熙十年(1671)复置雁平道,州属之。雍正二年(1724)升直隶州,属山西省政司。清末废雁平道。1912年改代州为代县,属雁门道。民国十年废道后,代县直属省。1949年属忻县专区。1958年并入繁峙县,属晋北专区。1961年恢复代县,属忻县专区。1967年属忻县地区。1983年属忻州地区。2000年属地级忻州市。
1996年,代县面积2625平方千米,人口约20万人。辖6个镇、11个乡:城关镇、阳明堡镇、峨口镇、枣林镇、聂营镇、滩上镇、峪口乡、新高乡、上磨坊乡、胡峪乡、上田乡、分水岭乡、八塔乡、交口乡、白草口乡、西窖乡、胡家滩乡。县政府驻城关镇。
2000年第五次人口普查,代县常住总人口203311人,其中,城关镇43324人,阳明堡镇21265人,峨口镇34842人,聂营镇9935人,枣林镇19292人,滩上镇6309人,新高乡17123人,峪口乡18693人,上磨坊乡11045人,胡峪乡4411人,上田乡5501人,八塔乡2767人,西窖乡1754人,交口乡2896人,分水岭乡2328人,胡家滩乡896人,白草口乡930人。
2001年区划调整后,全县辖6个镇、5个乡:上馆镇、阳明堡镇、峨口镇、聂营镇、枣林镇、滩上镇、新高乡、峪口乡、上磨坊乡、胡峪乡、雁门关乡。县政府驻上馆镇。
2010年第六次人口普查,代县常住总人口214091人,其中,上馆镇65960人,阳明堡镇19840人,蛾口镇27443人,聂营镇11628人,枣林镇18537人,滩上镇5811人,新高乡21437人,峪口乡17997人,上磨坊乡12347人,胡峪乡5228人,雁门关乡7863人。
2015年末,代县辖6个镇、5个乡(合计11个),8个居委会、377个村委会(合计385个)。