春秋為白翟部族地。戰國趙于今西南設平都邑。秦始皇二十六年(前221)于境北設陽周縣,西漢增設平都縣,東漢末俱廢。魏晉時為匈奴等族所居,未設縣。北魏在今縣東南置朔方郡及魏平縣。北周廢朔方郡。唐貞觀二年(628年)撤銷魏平縣。
宋至道年間(995~997)以后為西夏地,縣廢。治平四年(1067)收復置安定堡。蒙古憲宗蒙哥二年(1252年)在今西安定鎮置安定縣,蒙古至元元年(1264年)在今縣東析置丹頭縣,四年并丹頭縣入安定縣。明、清仍舊安定縣。1914年屬榆林道。1928年直屬省。
1934年秋,改西部的陜甘寧邊區蘇維埃安定縣(與國民黨安定縣政府并存)為赤源縣。1935年2月在東部設秀延縣,同年3月(一說10月)設立瓦窯堡市(縣級)。1935年3月(一說11月)至1936年,瓦窯堡市曾是中華蘇維埃共和國中央臨時政府和陜北省人民政府所在地。
1936年至1937年先后撤銷赤源縣、瓦窯堡市和秀延縣,轄地統屬安定縣。1942年5月陜甘寧邊區政府為紀念謝子長烈士,改安定縣為子長縣,縣城由安定鎮遷至瓦窯堡鎮。1950年5月屬綏德專區。1956年10月屬延安專區。1968年屬延安地區。1996年屬延安市。
1950年設8區44鄉。9月,東二區并入東一區,設7區45鄉。一區轄宜家散岔、界石堡、任家園子、水園子、湫峪溝、楊家園子、宜家畔、徐家岔8鄉。二區轄安定、二十里鋪、椿樹砭、唐家川、欒家坪、十里鋪6鄉。三區轄李家岔、東溝、柏山寺、石灰岔、水晶溝5鄉。四區轄路家坪、路家寺、玉家灣、南溝岔、新窯灣5鄉。五區轄廟墕、宋家坪、劉家坪、高新莊、楊家老莊、郭家河、高臺7鄉。六區轄滴哨、李家川、寺灣、余家坪、王家莊、強家峁、陽臺7鄉。七區轄祁家灣、芋則灣、新寨河、吳家寨子、芽坪、城內第五鄉、第六鄉,共7鄉。
1952年,改為8區49鄉。1956年7月,清澗縣宜家河村歸入子長縣。1958年12月,安塞縣撤銷,北部(草溝門以北地區)并入子長縣。全縣改設瓦窯堡、余家坪、楊家園子、玉家灣、澗峪岔、李家岔、安定、寺灣、真武洞、化子坪、坪橋11個公社,轄地為今子長縣地及安塞縣北部地區。1961年9月,原安塞縣轄地真武洞、譚家營、郝家坪、坪橋、西瓦界、化子坪、鐮刀灣公社劃歸安塞縣。
1965年4月,全縣轄14個公社,5個居委會。1980年10月,安定、玉家灣、楊家園子、瓦窯堡改制為鎮。1984年9月,全縣轄瓦窯堡、玉家灣、安定、楊家園子4鎮及馬家砭、馮家屯、南溝岔、史家畔、寺灣、熱寺灣、高臺、澗峪岔、余家坪、欒家坪、石家灣、李家岔12鄉,333個行政村。1988年全縣共43131戶,182404人。
1996年,子長縣面積2405平方千米,人口52281戶,219442人。轄4個鎮、12個鄉:瓦窯堡鎮、安定鎮、玉家灣鎮、楊家園子鎮、馬家砭鄉、史家畔鄉、熱寺灣鄉、澗峪岔鄉、高臺鄉、南溝岔鄉、李家岔鄉、石家灣鄉、欒家坪鄉、馮家屯鄉、寺灣鄉、余家坪鄉,共有351個行政村、14個居委會。縣政府駐瓦窯堡鎮。
1998年,馬家砭鄉改為馬家砭鎮,南溝岔鄉改為南溝岔鎮,澗峪岔鄉改為澗峪岔鎮,李家岔鄉改為李家岔鎮,撤銷馮家屯鄉并入瓦窯堡鎮。調整后,子長縣轄8個鎮、7個鄉。
2000年第五次人口普查,全縣總人口207972人,其中:瓦窯堡鎮69279人,楊家園子鎮12706人,玉家灣鎮9857人,安定鎮14992人,馬家砭鎮14583人,南溝岔鎮10659人,澗峪岔鎮9940人,李家岔鎮10438人,熱寺灣鄉5323人,史家畔鄉11743人,高臺鄉5880人,石家灣鄉5641人,欒家坪鄉11082人,余家坪鄉8308人,寺灣鄉7541人。
2001年,撤銷高臺鄉并入澗峪岔鎮,撤銷石家灣鄉并入李家岔鎮。區劃調整后,子長縣轄8個鎮、5個鄉:瓦窯堡鎮、楊家園子鎮、玉家灣鎮、安定鎮、馬家砭鎮、南溝岔鎮、澗峪岔鎮、李家岔鎮、熱寺灣鄉、史家畔鄉、欒家坪鄉、余家坪鄉、寺灣鄉。(354個行政村、9個社區)
2011年,撤銷熱寺灣鄉并入楊家園子鎮,撤銷寺灣鄉、余家坪鄉合并設立余家坪鎮,撤銷欒家坪鄉并入瓦窯堡鎮。調整后,子長縣轄9個鎮、1個鄉:瓦窯堡鎮、楊家園子鎮、玉家灣鎮、安定鎮、馬家砭鎮、南溝岔鎮、澗峪岔鎮、李家岔鎮、余家坪鎮、史家畔鄉。