평안북도 서해안의 중부 바닷가에 있는 군. 북부는 동림군ㆍ염주군과 접해 있고 그밖의 변두리는 서해에 면해 있다. 바다쪽으로 길게 뻗어나간 이 군은 하나의 큰 반도(철산반도)로 되어 있으며 많은 섬을 가지고 있다. 북남(가산리~기봉리) 간의 길이는 29km이고, 동서(수부리~장송노동자구) 간의 길이는 19km이며, 면적(섬 포함)은 364㎢로서 도 전체면적의 2.87%를 차지한다. 현재 행정구역은 1읍 2구 25리로 구성되어 있으며 군 소재지는 철산읍이다.
조선왕조가 건립된 이후 1413년(태종 13년)에 원래 지명이었던 철주에서 ‘철(鐵)’자를 따고 산이 많은 고장이라 하여 ‘산(山)’자를 붙여서 철산군으로 되었다. 철주는 이 고장에 쇠가 많이 매장되어 있는 고장이라는 데서 비롯된 지명이다.
철산군 지역은 일찍부터 고구려의 영역에 편입되어 장녕현(長寧縣) 또는 동산현(銅山縣)으로 불렸고 그 후 철천(鐵川)으로 되었다가, 1018년(현종 9년)에 북계 철주(鐵州)로 개편되었다. 1102년(숙종 7년)에는 서북면 철주로 되었다. 조선왕조가 건립된 이후 1413년(태종 13년)에는 평안도 철산군으로 되었다. 1622년(광해군 14년)에 도호부(都護府)로 승격되었다가, 1624년(인조 2년)에 다시 현으로 강등되었으며 1633년(인조 11년)에 다시 도호부로 되었다. 그 후 1812년(순조 12년)에 다시 현으로 강등되었다.
1895년에 부군제를 실시하면서 의주부 철산군으로 되었고 그 이듬해인 1896년에 13도제를 실시하면서 평안북도 철산군으로 개편되었다. 이때 군청을 차련관(車輦館)에서 철산읍으로 옮기고 고성면(古城面), 백량면(栢梁面), 정혜면(丁惠面), 참면(站面), 여한면(餘閑面), 서림면(西林面), 부서면(扶西面), 운산면(雲山面) 등 8개 면을 관할하였다. 1918년에 고성면과 부서면 일부를 병합하여 철산면(鐵山面)을 신설하였고, 1939년에 정혜면이 부서면에, 운산면이 백량면에 편입되면서 폐지되어 철산면, 부서면, 여한면, 백량면, 참면, 서림면 등 6개 면을 개편 관할하였다. 1946년에 군 소재지를 또다시 차련관(현재 동림읍)으로 옮겼으며, 1949년에 리제를 실시하였다.
1954년에 부영리를 동천노동자구(東川勞動者區)로, 동창리를 동창노동자구(東倉勞動者區)로, 추암리를 가봉노동자구(加峯勞動者區)로 각각 개편하였다. 1958년에 금봉리가 수부리에 편입되고, 장송리가 장송노동자구(長松勞動者區)로 승격되었으며, 1963년에 동창노동자구를 동창리로, 동천노동자구를 동천리(東川里)로 강등하였다. 1967년 4월에 동림군 신곡노동자구 일부가 가봉노동자구에 편입되었고, 같은 해 10월에 가봉노동자구 일부가 동림군 신곡노동자구에 흡수되었다.
2003년 현재 행정구역은 1읍(철산읍), 2구(가봉노동자구, 장송노동자구), 25리(가도리, 가산리, 검암리, 근천리, 금산리, 기봉리, 대화리, 동창리, 동천리, 동평리, 연수리, 영삭리, 이화리, 명암리, 문봉리, 보산리, 선암리, 선주리, 성암리, 수부리, 오봉리, 원세평리, 월봉리, 풍천리, 학산리)로 구성되어 있다. 철산군 소재지는 철산읍이다.